Запрос iOSAccessToAccountsWithType не отображает запрос на разрешение / NSAlert

Насколько я понимаю, когда я призываю [ACAccountStore requestAccessToAccountsWithType:options:completion]пользователь должен видеть UIAlert, который спрашивает, дают ли они разрешение моему приложению.

Когда я запускаю этот код, никогда не появляется подсказка и granted переменная всегда ложна

-(void)myfunction { 
if (!_accountStore) _accountStore = [[ACAccountStore alloc] init];

    ACAccountType *fbActType = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];


    NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
                             (NSString *)ACFacebookAppIdKey, @"##########",  
                             (NSString *)ACFacebookPermissionsKey, [NSArray arrayWithObject:@"email"],  
                             nil];


    [_accountStore requestAccessToAccountsWithType:fbActType options:options completion:^(BOOL granted, NSError *error) {
                                                NSLog(@"Home.m - getFBDetails - Check 2");
                                                if (granted == YES) {
                                                    NSLog(@"Success");
                                                    NSArray *accounts = [_accountStore accountsWithAccountType:fbActType];
                                                    _facebookAccount = [accounts lastObject];                                                    
                                                    [self me];
                                               } else {
                                                    NSLog(@"ERR: %@ ",error);
                                                    // Fail gracefully...
                                              }
            }
     ];

}

И я получаю ошибку: ERR: Error Domain=com.apple.accounts Code=8 "The operation couldn’t be completed. (com.apple.accounts error 8.)"

Обновление: я провел некоторое тестирование, и если я запускаю с использованием ACAccountTypeIdentifierTwitter, Я получаю приглашение подключиться к моим учетным записям Twitter, поэтому я предполагаю, что это что-то с моими настройками Facebook...

2 ответа

Решение

Вы перевернули объекты и ключи в вашем словаре опций:

NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
                         @"##########",  ACFacebookAppIdKey,
                         [NSArray arrayWithObject:@"email"], ACFacebookPermissionsKey,
                         nil];

Вы на самом деле не хватает ключа: ACFacebookAudienceKey. Вы можете изменить это так:

NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
                                 (NSString *)ACFacebookAppIdKey, @"##########",  
                                 (NSString *)ACFacebookPermissionsKey, [NSArray arrayWithObject:@"email"],
                                 (NSString *)ACFacebookAudienceKey, ACFacebookAudienceEveryone,
                                 nil];

Кстати, когда вы используете Twitter, параметры должны быть nil,

Другие вопросы по тегам