Я пытаюсь использовать iOS Social.framework для публикации в Facebook. Однако у большинства пользователей не будет настройки Facebook в «Настройки»> «Facebook», поэтому Facebook не отображается, когда вы вызываете UIActivityViewController, его просто нет в списке. (См. UIActivity без настроек для Facebook или просто погуглите "facebook не показать в UIActivityViewController", есть много людей, пытающихся решить эту проблему.)
Наше приложение уже использует Facebook SDK, поэтому я могу получить информацию об учетной записи Facebook, поэтому я решил просто получить информацию, а затем сохранить ее в «Настройки»> «Facebook». Вот мой код. (Который я получил от Когда мы используем saveAccount:(ACAccount * ) учетная запись класса ACAccountStore? и iOS requestAccessToAccountsWithType не отображается Запрос разрешения / 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.
Буду признателен за любую помощь в этом, спасибо!
[FBSession activeSession] accessTokenData.accessToken]
Am также в той же ситуации.. - person Rafeek   schedule 09.01.2014