6

我正在尝试使用来自 IOS 应用程序的passport-facebook-token对 node.js api 进行身份验证。

我有用户名和密码身份验证设置,并且按照示例通过护照和护照-facebook-token 设置正常工作。

passport.use(new FacebookTokenStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({ facebookId: profile.id }, function (err, user) {
return done(err, user);
});

我只是无法弄清楚将访问令牌发送到 API 所需的 HTTP 请求语法。

任何帮助将不胜感激。

谢谢。

4

2 回答 2

18

OK 设法从 passport-facebook-token 的策略文件中找出答案

这个需要:

http://URL?access_token=[访问令牌]

从IOS我简单地测试了这个:

NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];
NSLog(@"This is token: %@", fbAccessToken);        
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myapi.url.com/auth/facebook?access_token=%@",fbAccessToken]];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
[req setHTTPMethod:@"GET"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURLResponse *res;
NSError *err;
[NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
if (!err) {
NSLog(@"The user is logged in on the server side too");
} else {
NSLog(@"Error occurred. %@", err);
}
});    

希望这对其他人有帮助。

于 2013-09-01T15:24:40.263 回答
0

您也可以使用标题来执行此操作。为此卷曲

curl localhost:3000/endpoint -H "Authorization: Bearer <facebook token>" 
于 2019-01-31T20:57:56.963 回答