Kof*_*Kof 11 facebook-ios-sdk ios6
使用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 { ... }
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,此方法会抛出NSInvalidArgumentException消息Access options are not permitted for this account type. The options argument must be nil.,这是抛出的[ACAccountStore requestAccessToAccountsWithType:options:completion:].
检查Apple的文档ACAccountStore,我看到该方法的评论:
"某些帐户类型(如Facebook)需要一个选项字典.如果没有为此类帐户类型提供选项字典,此方法将抛出NSInvalidArgumentException.相反,如果帐户类型不需要选项字典,则options参数必须为零."
除了Facebook之外,Apple要求这是零,但这种方法是从Facebook调用的,所以也许这是一个错误 - 无论是在Facebook还是在iOS 6.0/.1,但我在网上找不到关于这个问题的任何内容.
有任何想法吗?
我找到了解决此错误的方法。请注意,此处也描述了该错误:https://developers.facebook.com/bugs/139251032898548
Facebook SDK 不会对 accountTypeWithAccountTypeIdentifier 的返回值进行 null 检查。请参阅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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |