[英]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.