2013-10-07 99 views
0

H,在我的應用程序中,用戶可以使用facebook登錄到應用程序。我可以使用fbsession成功登錄,但我無法註銷表單fbsession.Once用戶登錄到應用程序我已經從人工註銷手機。但我無法從fbseesion註銷。在我的應用程序中,當我點擊登錄按鈕時,它不直接登錄頁面,直接顯示對話框頁面,對於我來說,我必須每次在我的應用程序中顯示登錄頁面。 這裏是我的代碼如何註銷fbsession?

- (IBAction)facebooklogin:(id)sender 
{ 
     [FBSession openActiveSessionWithReadPermissions:@[@"email",@"user_location",@"user_birthday",@"user_hometown"] 
            allowLoginUI:YES 
           completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 

            switch (state) { 
             case FBSessionStateOpen: 
              [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
               if (error) { 
                NSLog(@"error:%@",error); 
               } 
               else 
               { 
                // retrive user's details at here as shown below 
                NSLog(@"user :%@",user); 

                NSDictionary *resultdict=[[[NSDictionary alloc]initWithObjectsAndKeys:user.first_name,@"FirstName",user.last_name,@"LastName",user.last_name,@"LastName",user.birthday,@"Birthday",user.username,@"Username",[user objectForKey:@"email"],@"Email",user.id,@"FBUserId", nil]autorelease]; 

                [[NSUserDefaults standardUserDefaults]setObject:resultdict forKey:@"FBUserDetails"]; 
                NSString *userid=[NSString stringWithFormat:@"%@@social",user.id]; 
                [self performSelector:@selector(checkSocialNetworkingRegisteredOrNot:) withObject:userid afterDelay:0.0f]; 
               } 
              }]; 
              break; 

             default: 
              break; 
            } 
           } ]; 
} 

/////////////////////////從fbsession手動註銷///////// //

- (IBAction)logoutmanullayInbackground:(id)sender 
{ 
[FBSession.activeSession closeAndClearTokenInformation]; 
[[FBSession activeSession] close]; 
[[FBSession activeSession] closeAndClearTokenInformation]; 
[FBSession setActiveSession:nil]; 

}

+0

爲什麼你想打擾用戶每次登錄表單?通常情況下,您只需登錄一次,然後保持您的狀態。當然,你需要給他們選擇在需要的地方註銷。但我沒有看到每個請求登錄的理由... –

+1

此行聽起來是正確的註銷:[FBSession.activeSession closeAndClearTokenInformation] - 它不工作? –

+0

我的應用程序是一家餐廳的消費者應用程序,所以每個客戶都可以登錄 – user2230971

回答

1

您退出(其實你看到的按鈕說:「登錄」又意味着你已經成功登錄了)。但是,如果您使用SSO(通過iOS集成登錄或Facebook應用程序),則當用戶再次單擊「登錄」時,將不會提示它們(因爲應用程序或設備上的用戶已經授權你的應用程序)。

爲了解決這個問題(因爲你說你正在創建一個餐館應用程序),你可以卸載Facebook應用程序(並從iOS中刪除登錄),或者在打開會話時使用FBSessionLoginBehaviorForcingWebView登錄。

請參閱https://developers.facebook.com/docs/reference/ios/current/class/FBSession/#openWithBehavior%3AcompletionHandler%3A

+0

我已經解決了這個問題,通過使用FBSessionLoginBehaviorForcingWebView – user2230971