ios - FBSDKLoginManager 注销和登录管理

标签 ios objective-c fbsdk fbsdkloginkit

我正在尝试使用 FB SDK 登录。但是,偶尔会有一个用户已经登录。下面是我用来先注销的代码。

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

[loginManager logOut];
[loginManager logInWithReadPermissions:permissionsArray fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
}

我想知道两件事:

1) 下面会遇到竞争条件吗?
2)如果是这样,我应该以及如何使 logOut 同步以避免这种情况?

最佳答案

我认为这个问题更好的解决方案是检查 currentAccessToken 是否为 nil 并进行相应的管理。

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

if ([FBSDKAccessToken currentAccessToken]) {
    // It will be synchronous and will present an alert controller which will further confirm you to logout and will set token and profile to nil.
    [loginManager logOut];
    //after logout you can change your LogOut Button to Login Facebook as done in Facebook samples.
} else { 
    // if the token is nil, just make a login call
    [loginManager logInWithReadPermissions:permissionsArray fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    }
}

关于ios - FBSDKLoginManager 注销和登录管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39902496/

相关文章:

ios - 相机插件在 ios 的 phonegap 应用程序中不起作用

ios - 如何在不发送错误的情况下将按钮连接到另一个 View Controller ?

ios - 如何在第 2 页(共 3 页)上使用 UIScrollView 禁用水平滚动?

iphone - 触摸时UISearchBar崩溃

ios - 使用 FBSDK 分享视频时如何显示对话框?

iOS swift 3.0本地JSON解析崩溃

objective-c - NSString : number of a word

objective-c - 强制转换为 (id<protocol>) 以保证存在一个属性

ios - Facebook iOS 共享对话框崩溃

ios - Firebase Facebook 登录错误 : FIRAuthErrorDomain - Unsuccessful debug_token response from Facebook