重置 Facebook 令牌参考 - Facebook SDK 4.0

Reset Facebook Token Reference - Facebook SDK 4.0

我之前使用以下方法清除和重置 Facebook 访问令牌

[FBSession.activeSession closeAndClearTokenInformation];

自更新到 4.0 后,此功能不再有效。 FBSession.activeSession 已更改为 [FBSDKAccessToken currentAccessToken]

但是我找不到适用于最新版本的 closeAndClearTokenInformation 的最新版本。有什么建议吗?

FBSDKLoginManager *logMeOut = [[FBSDKLoginManager alloc] init];
[logMeOut logOut];

[FBSDKAccessToken setCurrentAccessToken:nil];
[FBSDKProfile setCurrentProfile:nil];

注销

然后当您再次登录时,请务必设置:

login.loginBehavior = FBSDKLoginBehaviorWeb;

像这样:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
login.loginBehavior = FBSDKLoginBehaviorWeb;
[login logInWithReadPermissions:@[@"user_friends"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         etc...
}];

我在文档中发现一些信息说 FBSDKLoginBehaviorWeb 可用于 "kiosk" 个应用程序;我猜这些应用程序是设计用来让不止一个人定期登录的。

需要注意的一点是,此登录方法创建了一个模式 UIWebView,它设置为纵向模式。我不确定是否可以更改它。

Swift 2+ 简单的解决方案

FBSDKLoginManager().logOut()

Swift 5+ 简单的解决方案

LoginManager().logOut()

在 swift 中,您可能需要执行以下操作以完全关闭会话:

import FacebookCore
import FacebookLogin

//...

//in your method:

let fbLoginManager = LoginManager()
fbLoginManager.logOut()
AccessToken.current = nil
UserProfile.current = nil