2014-08-29 1 views
0

Я попытался под кодом, но он работает с ошибками.Как получить доступ к facebookВозврат в ios лучший способ?

- (void) openActiveSessionWithPermissions: (NSArray *) arr 
{ 
    if ([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded){ 
     [self openWithUI:NO permissions:arr]; 
    } else if ([FBSession activeSession].state == FBSessionStateOpen || [FBSession activeSession].state == FBSessionStateOpenTokenExtended){ 
     [[FBSession activeSession] closeAndClearTokenInformation]; 
    } else { 
     [[FBSession activeSession] closeAndClearTokenInformation]; 
     [self openWithUI:YES permissions:arr]; 
    } 
} 

- (void) openWithUI: (BOOL) UI permissions: (NSArray *) permissions 
{ 
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:UI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 

     if (error) { 
      [self.delegate didReceieveError:[error description]]; 
     } else { 
      [self.delegate didTakeAccessToken:session.accessTokenData.accessToken]; 
     } 
    }]; 
} 

Я не смог найти свои ошибки. Каков наилучший способ получить accesToken? Благодарю.

+0

Если оператор в 'openActiveSessionWithPermissions:' выглядит странным и завершающие обработчика в 'openActiveSessionWithReadPermissions:' будет вызываться несколько раз. Чтение документов. – kelin

ответ

0

Попробуйте это:

[FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"email"] 
              allowLoginUI:YES 
             completionHandler: 
     ^(FBSession *session, FBSessionState state, NSError *error) 
     { 
      if (FBSession.activeSession.isOpen) 
      { 
       [[FBRequest requestForMe] startWithCompletionHandler: 
        ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) 
        { 
         if (!error) 
         { 
          //Get AccessToken        
          NSString *aStrFBAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];    
         } 
        }]; 
      } 
     }]; 
+0

Я пробовал это, но он действительно проверяет, действителен ли accessToken или нет. –