我正在尝试使用本机(iOS 6-7x)库从我的应用程序授权用户使用 Facebook。登录成功后,我想将身份验证令牌传递给我的服务器。
下面的代码可以正常工作,除非用户没有在操作系统中设置他们的 Facebook 帐户。在这种情况下,我收到以下错误:
错误 Domain=com.apple.accounts Code=6 “操作无法完成。(com.apple.accounts 错误 6。)
-(void) initFacebookLogin
{
LRAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
if (appDelegate.accountStore == nil)
appDelegate.accountStore = [[ACAccountStore alloc] init];
__block ACAccount *facebookAccount = nil;
ACAccountType *facebookAccountType = [appDelegate.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSArray * permissions = @[@"publish_stream", @"publish_actions", @"email"];
NSMutableDictionary *options = [[NSMutableDictionary alloc] initWithObjectsAndKeys:FACEBOOK_APP_ID, ACFacebookAppIdKey, permissions, ACFacebookPermissionsKey, ACFacebookAudienceOnlyMe, ACFacebookAudienceKey, nil];
[appDelegate.accountStore requestAccessToAccountsWithType:facebookAccountType
options: options
completion: ^(BOOL granted, NSError *error) {
if ( granted )
{
NSArray *accounts = [appDelegate.accountStore accountsWithAccountType:facebookAccountType];
facebookAccount = [accounts lastObject];
ACAccountCredential* accountCredential = [facebookAccount credential];
NSString* token = [accountCredential oauthToken];
NSLog( @"token=%@", token );
}
else {
// WHAT DO I DO HERE???
// Error Domain=com.apple.accounts Code=6 "The operation couldn’t be completed. (com.apple.accounts error 6.)"
NSLog(@"%@", [error description]);
}
}];
}
我还需要使用 Facebook SDK 要求用户登录吗?我可以使用另一个 iOS 原生库来提示用户在 iOS 中设置 Facebook 访问吗?
或者,是否有更好的方法来简化 Facebook 身份验证(如果用户已经在操作系统中登录,则不要求用户登录)?