Запрос 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
,