Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IOS Facebook Authentication Using node.js passport-facebook-token

I'm trying to authenticate to a node.js api using passport-facebook-token from an IOS app.

I have username and password auth set-up and working fine through passport and the passport-facebook-token set-up as per the example.

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);
});

I just cant figure out the HTTP request syntax needed to send the access token across to the API.

Any help would be massively appreciated.

Thanks.

like image 756
poperob Avatar asked Sep 01 '13 03:09

poperob


1 Answers

OK managed to work out the answer from the strategy file from passport-facebook-token

It requires:

http://URL?access_token=[access token]

From IOS i simply tested this with:

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);
}
});    

Hope this helps someone else.

like image 133
poperob Avatar answered Nov 07 '22 05:11

poperob