繁体   English   中英

Facebook没有完全退出ios

[英]Facebook doesn't logout completely-ios

当我试图将fbsdk(facebook)整合到我的应用程序时,它的登录会话工作得很好。但是当我从mp应用程序注销时,它确实显示了注销actionsheet ,我可以轻松地注销它。但是当我尝试再次登录时Facebook直接进入Facebook确认页面,而不是去登录页面详细信息。希望你的帮助。

在此输入图像描述

我用于注销的代码。

  FBSDKLoginManager *manager = [[FBSDKLoginManager alloc] init];
            [FBSDKAccessToken setCurrentAccessToken:nil];
            [FBSession.activeSession closeAndClearTokenInformation];

            NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
            for(NSHTTPCookie *cookie in [storage cookies])
            {
                NSString *domainName = [cookie domain];
                NSRange domainRange = [domainName rangeOfString:@"facebook"];
                if(domainRange.length > 0)
                {
                    [storage deleteCookie:cookie];
                }
            }
            [manager logOut];

它发生了因为Facebook登录是由Safari或Facebook应用程序完成的(如果你的手机中安装了facebook应用程序并且你已经在设置帐户中添加了它)。

这是因为,Safari持有facebook会话并将其保存为cookie。 对于Facebook应用程序,如果它连接到设置帐户,它将继续保持会话直到您手动注销。 从safari或facebook应用程序手动注销或清除safari的cookie是从facebook注销的唯一方法,如果它已经登录。

如果要撤消所有权限,则必须执行以下操作:

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions" parameters:nil 
    HTTPMethod:@"DELETE"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
  // ...
}];

https://developers.facebook.com/docs/facebook-login/permissions/v2.4

但是,即使这并不能保证您的应用程序将通过Facebook从访问权限中删除,同样,您正在做的事情基本上是通过Facebook注销停用活动令牌,但您不会通过Facebook删除该用户的权限Facebook的。

如果您真的想要删除用户或者如果用户想要从他们的Facebook帐户删除您的应用程序,这有点糟糕,但这就是你可以去的除非用户自己在他们的Facebook帐户中手动删除权限,这是facebook必须的说到这个:

撤消登录

您还可以通过调用此Graph API端点,让人们完全取消授权应用或撤消登录:

 DELETE /{user-id}/permissions 

此请求必须使用有效的用户访问令牌或当前应用的应用访问令牌。 如果请求成功,您的应用会收到true的回复。 如果呼叫成功,则该人员的任何用户访问令牌都将失效,他们将不得不再次登录。 由于您要对您的应用取消授权,因此他们还必须授予对您应用的访问权限,就像他们第一次登录一样。

我已将此报告给Facebook作为一个错误,后来作为安全问题(您注销了某些内容,然后您可以在以后再次登录而不再使用密码...)。

他们回答说这不是一个错误,而是一个功能。 “按设计”。

注销的唯一方法似乎是从手机拨打网址: https//m.facebook.com/logout.php? h = [16个字符长的类似令牌的字符串]&t = [10个字符长的数字]&refid = [数字]

由此,“h”属性似乎是强制性的。 如果省略其他所有内容,它仍然有效。 但有一个问题:我不知道这个字符串是什么。 有任何想法吗?

或其他方法注销?

使用此... [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];

暂无
暂无

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

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