3

当我试图将 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];
4

4 回答 4

3

它不会发生,因为 facebook 登录是由 Safari 或 facebook 应用程序完成的(如果 facebook 应用程序安装在您的手机中并且您已将其添加到设置帐户中)。

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

于 2015-08-18T06:35:50.283 回答
0

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

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

注销的唯一方法似乎是从电话中调用一个网址: https ://m.facebook.com/logout.php? h=[a 16 character long token-like string]&t=[10 char long number ]&refid=[一个数字]

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

或者其他退出方式?

于 2016-02-19T08:24:11.903 回答
0

使用这个... [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];

于 2016-02-20T10:59:00.370 回答
0

如果你想撤销所有权限,那么你必须这样做:

[[[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 必须要做的说说这个:

撤销登录

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

DELETE /{user-id}/permissions

此请求必须使用有效的用户访问令牌或当前应用的应用访问令牌发出。如果请求成功,您的应用会收到 true 响应。如果调用成功,此人的任何用户访问令牌都将失效,他们将不得不重新登录。因为您正在取消对您的应用程序的授权,所以他们还必须像第一次登录一样授予对您应用程序的访问权限。

于 2015-08-18T05:51:27.063 回答