我正在使用最新的 FB SDK 进行本机登录的 iOS 应用程序。当我在设置中的“允许这些应用程序使用您的帐户”中关闭我的应用程序时,预计会出现错误“com.facebook.sdk 错误 2”来。
我想知道即使“允许这些应用程序使用您的帐户”对我的应用程序关闭,是否有任何优雅的方法可以解决此错误?我已经搜索了解决方案,但所有答案都说您需要打开该选项。但我认为更好的方法是,如果用户关闭该选项,我们仍然可以让他登录,无缝回退到快速应用切换方式,就像他根本没有在他的设备上登录 Facebook 一样。如何在最新的 FB SDK 中做到这一点?谢谢!
=====================================更新============ ============================ 我使用已弃用的函数 openActiveSessionWithPermissions:allowLoginUI:completionHandler 解决它
首先我们需要检查用户是否关闭了这个选项:
self.useAccountAllowed = true;
ACAccountStore *accountStore;
ACAccountType *accountTypeFB;
if ((accountStore = [[ACAccountStore alloc] init]) &&
(accountTypeFB = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook] ) ){
NSArray *fbAccounts = [accountStore accountsWithAccountType:accountTypeFB];
id account;
if (!fbAccounts)
{
//do not log into FB on the device
}
else if ([fbAccounts count] == 0) {
[FBSession.activeSession closeAndClearTokenInformation];
self.useAccountAllowed = false; //user switch this option off
}
然后在 openSession 函数中,如果 self.useAccountAllowed 为 false,则使用已弃用的函数:
if (self.useAccountAllowed) {
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession* session, FBSessionState status, NSError* error){
[self sessionStateChanged:session state:status error:error];}];
}
else {
NSArray* lPermission = FBSession.activeSession.permissions;
[FBSession openActiveSessionWithPermissions:lPermission allowLoginUI:YES completionHandler:^(FBSession* session, FBSessionState status, NSError* error){
[self sessionStateChanged:session state:status error:error];}];
不确定这是否是正确的方法。