【发布时间】:2014-03-29 03:39:29
【问题描述】:
我正在尝试使用以下代码从 ACAccountStore 获取帐户:
- (void) facebookLoginOnSuccess: (void (^)(void)) successBlock onError:(void(^)(NSError *error))errorBlock{
self.facebookPermissions = @[
@"offline_access",
@"publish_stream",
@"user_birthday",
@"user_location",
@"email"
];
NSDictionary *options = @{
@"ACFacebookAppIDKey": [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookAppID"],
@"ACFacebookAppVersionKey": @"1.0",
@"ACFacebookPermissionsKey": self.facebookPermissions,
@"ACFacebookPermissionGroupKey": @"write"
};
[self accountLoginFor:ACAccountTypeIdentifierFacebook withOptions:options OnSuccess:successBlock onError:errorBlock];
}
- (void) accountLoginFor: (NSString *) accountTypeID withOptions: (NSDictionary *) options OnSuccess: (void (^)(void)) successBlock onError:(void(^)(NSError *error))errorBlock{
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:accountTypeID];
[accountStore requestAccessToAccountsWithType:accountType
options:options
completion:^(BOOL granted, NSError *error){
if (granted){
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];
NSLog(@"%@",accountsArray);
}
else {
NSLog(@"Error accessing account: %@", [error localizedDescription]);
}
}];
}
但是我收到了这个错误:
Error Domain=com.apple.accounts Code=6 "The operation couldn't be completed. (com.apple.accounts error 6.)"
我找不到任何相关内容,只有这个question。有什么想法可能是错的吗?
更新
我在 Apple 开发者文档中找到了这个。
帐户框架
请求访问 Facebook 帐户时,选项字典中唯一需要的键是 ACFacebookAppIdKey。 ACFacebookPermissionGroupKey 和 ACFacebookAppVersionKey 现已过时。
如果您在 ACFacebookPermissionsKey 下请求写入权限,例如 publish_stream,您必须为 ACFacebookAudienceKey 提供一个值,该值可以是 ACFacebookAudienceEveryone、ACFacebookAudienceFriends 或 ACFacebookAudienceOnlyMe。
所以我将选项更改为:
NSDictionary *options = @{
@"ACFacebookAppIDKey": [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookAppID"],
@"ACFacebookPermissionsKey": self.facebookPermissions,
@"ACFacebookAudienceKey": ACFacebookAudienceFriends
};
但我遇到了同样的错误。
【问题讨论】:
-
我很确定没关系,但这些键已经是字符串:
NSDictionary *options = @{ACFacebookAppIDKey:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookAppID"], ACFacebookPermissionsKey:self.facebookPermissions, ACFacebookAudienceKey:ACFacebookAudienceFriends}; -
我不明白你的评论。我正在使用新语法在 XCode 4.5 上定义字典/数组 :)
-
jab 说的是你不需要@"ACFacebookAppID",但可以写 ACFacebookAppID。因此,您可以删除 @"" ...但是,我同意他的观点,这无关紧要。还是试试吧。