繁体   English   中英

如何注销fbsession?

[英]How to log out from fbsession?

H,在我的应用程序中,用户可以使用facebook登录到应用程序。我能够使用fbsession成功登录,但是我无法从fbsession中注销。一旦用户登录到应用程序,我便会手动从fbsession中退出。 但我无法从fbseesion注销。 在我的应用程序中,每当我单击登录按钮时,它都不会定向到登录页面,而是直接显示对话框页面,而对于我来说,我每次在应用程序中都必须显示登录页面。 这是我的代码

   - (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];

}

您正在注销(实际上,您再次看到按钮说“登录”表示您已经成功注销)。 但是,如果您正在使用SSO(通过iOS集成登录名或Facebook应用程序),则当用户再次单击“登录”时,将不会提示他们(因为该应用程序或设备上的用户已经获得授权您的应用)。

要解决此问题(因为您说自己正在制作餐厅应用程序),可以卸载Facebook应用程序(并从iOS删除登录名),或者可以在打开会话时使用FBSessionLoginBehaviorForcingWebView登录。

请参阅https://developers.facebook.com/docs/reference/ios/current/class/FBSession/#openWithBehavior%3AcompletionHandler%3A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM