2014-01-06 101 views
0

我正在使用facebook-ios-sdk-3.10,使用這個SDK我將登錄並從FB中獲取用戶詳細信息它對我來說工作正常。通過facebook登錄在ios的sdk

這是我uisng

- (IBAction)fbLogin_click:(id)sender 
{ 
    if (AppDelegate.fbsession.state != FBSessionStateCreated) { 
     // Create a new, logged out session. 
     NSArray *permissions = [NSArray arrayWithObjects:@"offline_access", @"email", @"publish_stream", @"read_stream",@"read_friendlists",@"manage_friendlists",@"friends_about_me",@"publish_actions", nil]; 

     // create a session object, with defaults accross the board, except that we provide a custom 
     // instance of FBSessionTokenCachingStrategy 
     AppDelegate.fbsession = [[FBSession alloc] initWithAppID:nil 
                permissions:permissions 
               urlSchemeSuffix:nil 
              tokenCacheStrategy:nil]; 
    } 


    FBSessionLoginBehavior behavior = FBSessionLoginBehaviorForcingWebView; 
    if (AppDelegate.fbsession.state != FBSessionStateCreatedTokenLoaded) { 

     // even though we had a cached token, we need to login to make the session usable 
     [AppDelegate.fbsession openWithBehavior:behavior completionHandler:^(FBSession *session, 
                      FBSessionState status, 
                      NSError *error) { 
      if (error) 
      { 
       NSLog(@"Error"); 
      } 

      [self GetFBUserDetails]; 
     }];  
    } 
} 

-(void) GetFBUserDetails 
{ 
    if (AppDelegate.fbsession.isOpen) 
    { 
     [HUD show:YES]; 
     // fetch profile info such as name, id, etc. for the open session 
     FBRequest *me = [[FBRequest alloc] initWithSession:AppDelegate.fbsession graphPath:@"me"]; 

     self.pendingRequest= me; 

     [me startWithCompletionHandler:^(FBRequestConnection *connection, 
             NSDictionary<FBGraphUser> *user, 
             NSError *error) { 
      // because we have a cached copy of the connection, we can check 
      // to see if this is the connection we care about; a prematurely 
      // cancelled connection will short-circuit here 
      if (me != self.pendingRequest) { 
       return; 
      } 

      self.pendingRequest = nil; 
      //   self.pendingLoginForSlot = -1; 

      // we interpret an error in the initial fetch as a reason to 
      // fail the user switch, and leave the application without an 
      // active user (similar to initial state) 
      if (error) { 

       return; 
      } 

      [AppDelegate.fbsession closeAndClearTokenInformation]; 
      [FBSession.activeSession close]; 
      [FBSession.activeSession closeAndClearTokenInformation]; 
      FBSession.activeSession=nil; 

      [self FacebookCustomerRegister:user]; 
     }]; 
    } 
} 

在這種情況下,一些用戶通過電子郵件創建的Facebook帳戶,而不是非常交代,當他嘗試通過我的應用程序登錄的代碼就說明點擊登錄後空屏按鈕,沒有進一步的行動。我怎麼能通知用戶「你還沒有驗證你的FB帳戶」,它不會返回到我的應用程序。我怎樣才能從那裏獲取迴應?

任何人都可以幫助我嗎?

回答

0

您使用Graph API或FQL查詢從Facebook獲得的電子郵件地址是經過驗證的電子郵件地址。如果一個帳戶還沒有驗證它的電子郵件,但它不可能得到它。

所以當你獲取用戶信息,如果你沒有得到的電子郵件時,你必須得到許可,則用戶沒有驗證,就可以顯示一個警告或用戶的任何信息有關驗證電子郵件和信息

這裏

檢查更詳細Is it possible to check if an email is confirmed on Facebook?

+0

你好請參考這個網頁,我添加了屏幕短褲有http://stackoverflow.com/questions/20946555/facebook-login-via-app-with-unverified-user-account-in -fb – Rajesh

+0

爲什麼不切換應用程序到safari會清除正確的問題 – Retro