Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从fbsession注销?_Ios_Xcode_Facebook_Fbconnect - Fatal编程技术网

Ios 如何从fbsession注销?

Ios 如何从fbsession注销?,ios,xcode,facebook,fbconnect,Ios,Xcode,Facebook,Fbconnect,H、 在我的应用程序中,用户可以使用facebook登录该应用程序。我可以使用fbsession成功登录,但无法从fbsession注销。一旦用户登录到应用程序,我将手动从fbsession注销。但我无法从FBSEision注销。在我的应用程序中,当我点击登录按钮时,它不会指向登录页面,而是直接显示对话框页面,对于我来说,每次在我的应用程序中,我都必须显示登录页面。 这是我的密码 - (IBAction)facebooklogin:(id)sender { [FBSessi

H、 在我的应用程序中,用户可以使用facebook登录该应用程序。我可以使用fbsession成功登录,但无法从fbsession注销。一旦用户登录到应用程序,我将手动从fbsession注销。但我无法从FBSEision注销。在我的应用程序中,当我点击登录按钮时,它不会指向登录页面,而是直接显示对话框页面,对于我来说,每次在我的应用程序中,我都必须显示登录页面。 这是我的密码

   - (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;
                                  }
                              } ];
 }
}您正在注销(您看到按钮再次显示“登录”意味着您已成功注销)。但是,如果您正在使用SSO(通过iOS集成登录或Facebook应用程序),则当用户再次单击“登录”时,不会提示他们(因为应用程序或设备上的用户已授权您的应用程序)

为了解决这个问题(因为你说你正在制作一个餐馆应用程序),你可以卸载Facebook应用程序(并从iOS中删除登录),或者在打开会话时使用FBSessionLoginBehaviorForcingWebView登录


请参见

为什么每次都要用登录表单来打扰用户?通常情况下,您只需登录一次,然后它就会保持您的状态。当然,你需要给他们一个选择,让他们根据需要在某处注销。但是我看不出每个请求都需要登录的理由…这行代码听起来很正确,可以注销:[FBSession.activeSession closeAndClearTokenInformation]-它不工作吗?我的应用程序是一家餐厅的消费者应用程序,所以每个客户都可以登录[FBSession.activeSession closeAndClearTokenInformation]它不工作了-我尝试了一下。你什么时候做?就在他登录之后?只留下这一行:[FBSession.activeSession closeAndClearTokenInformation];我使用FBSessionLoginBehaviorForcingWebView解决了这个问题
  - (IBAction)logoutmanullayInbackground:(id)sender
{
[FBSession.activeSession closeAndClearTokenInformation];
[[FBSession activeSession] close];
[[FBSession activeSession] closeAndClearTokenInformation];
[FBSession setActiveSession:nil];