Había implementado el SDK de Facebook con la ayuda de los cuales podía get la authentication de Facebook, así como la información del usuario con el siguiente código.
if(!self.accountStore) self.accountStore = [[ACAccountStore alloc] init]; if(NSClassFromString(@"SLComposeViewController") != nil) { ACAccountType *facebookTypeAccount = [self.accountStore accountTypeWithAccountTypeIdentifier:@"com.apple.facebook"]; NSLog(@"facebookTypeAccount..:%@",facebookTypeAccount); NSArray *accounts = [self.accountStore accountsWithAccountType:facebookTypeAccount]; if (facebookTypeAccount) { if ([accounts respondsToSelector:@selector(count)]) { [self.accountStore requestAccessToAccountsWithType:facebookTypeAccount options:@{ACFacebookAppIdKey: @"key", ACFacebookPermissionsKey: @[@"email"]} completion:^(BOOL granted, NSError *error) { if(granted){ NSArray *accounts = [self.accountStore accountsWithAccountType:facebookTypeAccount]; [self fetchuserinfo]; } }]; } -(void)fetchuserinfo { NSString *accessToken = [FBSession activeSession].accessToken; NSString *url=[NSString stringWithFormat:@"https://graph.facebook.com/me"]; NSURL *meurl = [NSURL URLWithString:url]; SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodGET URL:meurl parameters:nil]; NSLog(@" setting account %@",_facebookAccount); merequest.account = _facebookAccount; [merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; returnedData = responseData; NSLog(@" meRequest Respnse %@", meDataString); if (returnedData!=nil) { if(NSClassFromString(@"NSJSONSerialization")) { NSError *error = nil; id object = [NSJSONSerialization JSONObjectWithData:returnedData options:0 error:&error]; if(error) { } if([object isKindOfClass:[NSDictionary class]]) { NSDictionary *results = object; NSString *categoryString=[[results valueForKeyPath:@"picture.data"] objectForKey:@"url"]; NSString *userid=[results objectForKey:@"id"]; if (userid != nil) { self.gotUserDetails = YES; } NSString *username=[results objectForKey:@"name"]; NSString *email=[results objectForKey:@"email"]; NSUserDefaults *userId=[NSUserDefaults standardUserDefaults]; [userId setObject:userid forKey:@"userid"]; } } } }
Pero para publicar el feed ( https://graph.facebook.com/me/feed/access_token= ) de este usuario de inicio de session necesito token de acceso. Si alguien sabe cómo get el token de acceso en iOS 6.0, por favor ayúdeme.
Gracias a todos.
En lugar de preocuparse por get el token y pasar eso con usted, Apple ha proporcionado SLRequest
que puede usar. Especifique la URL y los parameters de SLRequest
y SLRequest
ofertas de SLRequest
(de forma transparente) con la authentication, transmisión y recostackción de los datos de respuesta.
Es posible que no obtenga el token, pero aún necesita get autorización y esa autorización está vinculada a la list de cosas que desea hacer. Su código actualmente solo muestra que desea get la dirección de correo electrónico, pero puede agregar otros permissions:
[accountStore requestAccessToAccountsWithType:facebookAccountType options: @{ ACFacebookAppIdKey : ..., ACFacebookPermissionsKey : @[ @"email", @"read_stream", @"user_groups", @"user_videos" ]), } completion:^(BOOL granted, NSError *error) { ...
ACFacebookPermissionsKey
verificar la documentation de Facebook para averiguar qué permissions necesita solicitar del usuario y rellenarlos para ACFacebookPermissionsKey
.
//Try This -(void)fetchuserinfo { NSString *accessToken = [FBSession activeSession].accessToken; NSLog(@"%@",accessToken); } or -(void)fetchuserinfo { NSLog(@"%@",FBSession.activeSession.accessToken); }
Facebook SDK 3.2 en iOS 7 y iOS 8, funciona bien para mí.
Debes importar FacebookSDK / FacebookSDK.h
#import <FacebookSDK/FacebookSDK.h> .... [self checkFBIDWithToken:[FBSession activeSession].accessTokenData.accessToken];
PS: "checkFBIDWithToken: (NSString *) tempToken" es un método.
doc de Facebook: accessToken