Сохранить учетную запись Facebook с помощью ACAccountStore
Я пытаюсь использовать iOS Social.framework для публикации в Facebook. Тем не менее, большинство пользователей не имеют настройки Facebook в меню "Настройки"> "Facebook", поэтому Facebook не отображается при запуске UIActivityViewController, его просто нет в списке. (См. UIActivity без настроек для Facebook или просто Google: "Facebook не отображается в UIActivityViewController", множество людей пытаются решить эту проблему.)
Наше приложение уже использует Facebook SDK, поэтому я могу получить информацию об учетной записи Facebook, поэтому я подумал, что просто получу эту информацию и сохраню ее в меню "Настройки"> "Facebook". Вот мой код (Что я получил, когда мы используем учетную запись saveAccount:(ACAccount *) класса ACAccountStore? И запрос iOSAccessToAccountsWithType не отображает запрос разрешения / NSAlert)
- (void)storeAccountWithAccessToken:(NSString *)token secret:(NSString *)secret {
if (self.accountStore == nil) {
self.accountStore = [[ACAccountStore alloc] init];
}
//We start creating an account by creating the credentials object
ACAccountCredential *credential = [[ACAccountCredential alloc] initWithOAuthToken:token tokenSecret:secret];
ACAccountType *acctType =[self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
ACAccount *newAccount = [[ACAccount alloc] initWithAccountType:acctType];
//Here we assign credentials and now can save account
newAccount.credential = credential;
NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
[VVEnvironment stringForKey:kVVEnvironmentKeyFacebookAppID], (NSString *)ACFacebookAppIdKey,
[NSArray arrayWithObject:@"basic_info"], (NSString *)ACFacebookPermissionsKey,
ACFacebookAudienceEveryone, (NSString *)ACFacebookAudienceKey,
nil];
[_accountStore requestAccessToAccountsWithType:acctType options:options completion:^(BOOL granted, NSError *error) {
if (granted == YES) {
[self.accountStore saveAccount:newAccount withCompletionHandler:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"the account was saved!");
}
else {
if ([error code] == ACErrorPermissionDenied) {
NSLog(@"Got a ACErrorPermissionDenied, the account was not saved!");
}
NSLog(@"the account was not saved! %d, %@", [error code], error);
}
}];
}
else {
NSLog(@"ERR: %@ ",error);
}
}];
}
Я добавил вызов requestAccessToAccountsWithType, потому что без получения ACErrorPermissionDenied обратно от saveAccount. Когда я запускаю это, я вижу, что мое приложение ненадолго отодвигается в сторону диалогового окна Facebook (если я удаляю свое приложение на веб-сайте Facebook, оно вызывает полный диалог с запросом разрешений, которые я предоставляю).
Проблема в том, что предоставленного всегда НЕТ, поэтому у меня никогда не было возможности сохранить аккаунт. Что мне здесь не хватает?
Я запускаю это на реальном устройстве, на котором установлено и настроено приложение Facebook.
Буду признателен за любую помощь в этом, спасибо!
1 ответ
Для этого нет решения. Родным приложениям iOS для Facebook не разрешается писать или сохранять аккаунт на ACAccountStore
, Это позволяет получить доступ к учетной записи только из ACAccountStore
, iOS позволяет хранить только одну учетную запись Facebook одновременно. Попробуйте сделать эти шаги, вы поймете это легко,
Добавьте учетную запись facebook в настройки приложения и попробуйте получить разрешение на доступ к нему. Это будет грандиозное разрешение.
Удалите аккаунт и попробуйте получить разрешение, к которому он будет запрещен.
Добавьте учетную запись Facebook и получите доступ и попытайтесь сохранить новую учетную запись в
ACAccountStore
, Будет сказано, что родным приложениям не разрешено сохранять аккаунт вACAccountStore
,
Предложенное решение заключается в том, чтобы добавить учетную запись в настройки приложения и войти в нее с помощью и поделиться с помощью социальной платформы или presentOSIntegratedDialog
,