ios – FBSDKLoginBehaviorSystemAccount无效

我在我的目标c项目中使用Facebook SDK 4.3.0.
我需要使用在设置中配置的帐户登录facebook.

为此我正在使用:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
login.loginBehavior = FBSDKLoginBehaviorSystemAccount;
[login logInWithReadPermissions:@[@"public_profile",@"email",@"user_friends"] handler:^(FBSDKLoginManagerLoginResult *result,NSError *error) {
    if (error || result.isCancelled){
        if (result.isCancelled) {
            NSLog(@"is canceled");
        } else {
            NSLog(@"is not canceled");
        }

        NSLog(@"facebook login error:%ld %@",(long)error.code,[error localizedDescription]);
        [self showErrorWithMessage:@"Couldn't login with Facebook"];
        return;
    }
    FBSDKAccesstoken *token = [FBSDKAccesstoken currentAccesstoken];
    NSLog(@"facebook access token data: %@",token.tokenString);
    [[apiclient shared] requestAccesstoAccountWithFacebookTokenString:token.tokenString];
}];

使用在ipad中设置的facebook帐户,我运行它,但我登录失败,错误描述“Facebook帐户尚未在设备上配置”和错误代码307(根据FBSDKLoginConstants.h,它是FBSDKLoginSystemAccountUnavailableErrorCode ).

我试过2 ipads,两者都发生了同样的事情.
如果我使用FBSDKLoginBehaviorNative它工作正常(意味着它使用本机应用程序忽略设置).

How to make FBLoginView use system account by default问同样的问题,但唯一的答案是使用loginBehavIoUr,我已经在使用了. (我的评论中没有足够的声誉).

解决方法

Facebook SDK 4.7.0同样的问题.
SDK不使用NativeFlow for iOS版本> = 9.0.0.

https://github.com/facebook/facebook-ios-sdk/blob/master/FBSDKCoreKit/FBSDKCoreKit/Internal/ServerConfiguration/FBSDKServerConfigurationManager.m#L226-L228

你可以做的一切:更改SDK中的代码要么更改SDK在[NSUserDefaults standardUserDefaults]存储的数据要么使用旧版本的FB SDK

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...