首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACAccountStore错误6 (ACErrorAccountNotFound)和8

ACAccountStore错误6 (ACErrorAccountNotFound)和8
EN

Stack Overflow用户
提问于 2012-09-27 21:09:25
回答 3查看 14.8K关注 0票数 10

我试图使用以下代码从ACAccountStore获得一个帐户:

代码语言:javascript
复制
- (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]);
        }
    }];
    
}

但我发现了一个错误:

代码语言:javascript
复制
Error Domain=com.apple.accounts Code=6 "The operation couldn't be completed. (com.apple.accounts error 6.)"

我找不到任何相关的东西,只有这个问题。有什么不对的吗?

更新

我在Apple Developer Docs上发现了这个。

帐户框架 当请求访问Facebook帐户时,选项字典中唯一需要的键是ACFacebookAppIdKey。ACFacebookPermissionGroupKey和ACFacebookAppVersionKey现在已经过时了。 如果在ACFacebookPermissionsKey、(如publish_stream )下请求写权限,则必须为ACFacebookAudienceKey提供一个值,该值可以是ACFacebookPermissionsKey或ACFacebookAudienceOnlyMe.之一。

所以我改变了我的选择:

代码语言:javascript
复制
    NSDictionary *options = @{
        @"ACFacebookAppIDKey": [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookAppID"],
        @"ACFacebookPermissionsKey": self.facebookPermissions,
        @"ACFacebookAudienceKey": ACFacebookAudienceFriends
    };

但我也犯了同样的错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-16 10:31:44

好的,如果您还没有在iOS 6中的设置中设置一个帐户,它会抛出错误代码6。如果用户只是拒绝权限,而不是抛出错误代码7。在第6种情况下,我建议您要求用户首先在设置中设置她的帐户。

代码语言:javascript
复制
NSDictionary *options = @{
ACFacebookAppIdKey: @"1234567890",
ACFacebookPermissionsKey: @[@"publish_stream"],
ACFacebookAudienceKey: ACFacebookAudienceFriends
};

[self.accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error)
{
    if (granted)
    {
        NSArray *accounts = [self.accountStore accountsWithAccountType:facebookAccountType];

        if([accounts count]>0)
            self.facebookAccount = [accounts lastObject];
    }
    else
    {
        dispatch_async(dispatch_get_main_queue(), ^{

            // Fail gracefully...
            NSLog(@"%@",error.description);
            if([error code]== ACErrorAccountNotFound)
                [self throwAlertWithTitle:@"Error" message:@"Account not found. Please setup your account in settings app."];
            else
                [self throwAlertWithTitle:@"Error" message:@"Account access denied."];

        });
    }
}];
票数 34
EN

Stack Overflow用户

发布于 2012-11-05 19:41:21

jAmi有正确的想法,但我不喜欢代码中的神奇数字。有一个枚举,它内置了数字(ACErrorCode)。

票数 4
EN

Stack Overflow用户

发布于 2012-10-04 20:56:37

我自己的解决方案是使用Facebook,而不是直接尝试使用库,现在它已经开始工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12630066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档