gpt4 book ai didi

ios6 - 在 iOS 6.0 和 iOS 6.0.1 上调用 [FBSession openActiveSessionWithPermissions...] 时从 ACAccountStore 抛出 NSInvalidArgumentException

转载 作者:行者123 更新时间:2023-12-04 02:23:16 24 4
gpt4 key购买 nike

使用 Facebook iOS SDK 3.1.1,我正在使用此调用执行登录 -

NSArray *permissions = [[NSArray alloc] initWithObjects: @"email", @"user_birthday", @"user_location", nil];

@try {
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
}];
}
@catch { ... }

这种方法抛出 NSInvalidArgumentException 的情况很少见。留言 Access options are not permitted for this account type. The options argument must be nil. ,这是从 [ACAccountStore requestAccessToAccountsWithType:options:completion:] 抛出的.

检查 ACAccountStore 的 Apple 文档,我看到这个方法的评论:

“某些帐户类型(例如 Facebook)需要选项字典。如果没有为此类帐户类型提供选项字典,此方法将抛出 NSInvalidArgumentException。相反,如果帐户类型不需要选项字典,则选项参数必须为零。”

除了 Facebook,Apple 要求此方法为零,但此方法是从 Facebook 调用的,所以这可能是一个错误 - 无论是在 Facebook 还是在 iOS 6.0/.1,但我在网上找不到有关此问题的任何信息。

有任何想法吗?

最佳答案

我找到了解决此错误的方法。请注意,此处也描述了该错误:https://developers.facebook.com/bugs/139251032898548

Facebook SDK 不会对 accountTypeWithAccountTypeIdentifier 的返回值进行空检查。见 https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBSystemAccountStoreAdapter.m?source=c#L176

要解决此问题,您可以在尝试 facebook lgoin 之前进行以下检查:

if ([[[ACAccountStore alloc]init] accountTypeWithAccountTypeIdentifier:@"com.apple.facebook"] == nil) {
NSLog(@"Cannot proceed, not facebook account type identifier");
return;
}

关于ios6 - 在 iOS 6.0 和 iOS 6.0.1 上调用 [FBSession openActiveSessionWithPermissions...] 时从 ACAccountStore 抛出 NSInvalidArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com