У меня есть совместное использование Facebook, используя SLRequest в моем приложении iOS. Все работает нормально, но каждый раз, когда я хочу публиковать сообщения, пользователю отображается подсказка о том, разрешено ли приложению отправлять сообщение от его имени.Дайте приложение iOS постоянное разрешение на публикацию на Facebook
По некоторым причинам (я отправляю с Apple Watch) было бы важно получить постоянное разрешение на публикацию. В противном случае это будет очень плохой пользовательский интерфейс.
Таким образом, я ищу возможность постоянно разрешать публикацию имени пользователя для моего приложения.
- (void)postToFacebook:(NSString *)postMessage toAudience:(int)audienceIndex {
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountTypeFacebook =
[accountStore accountTypeWithAccountTypeIdentifier:
ACAccountTypeIdentifierFacebook];
NSArray *audienceArray = [[NSArray alloc] initWithObjects:@"ACFacebookAudienceEveryone", @"ACFacebookAudienceFriends", @"ACFacebookAudienceOnlyMe", nil];
NSDictionary *options = @{ACFacebookAppIdKey: @"<HERE'S MY FACEBOOK APP ID>", ACFacebookPermissionsKey: @[@"publish_actions"], ACFacebookAudienceKey: [audienceArray objectAtIndex:audienceIndex]};
[accountStore requestAccessToAccountsWithType:accountTypeFacebook options:options completion:^(BOOL granted, NSError *error) {
if(granted) {
NSArray *accounts = [accountStore accountsWithAccountType:accountTypeFacebook];
ACAccount *facebookAccount = [accounts lastObject];
NSDictionary *parameters =
@{@"access_token":facebookAccount.credential.oauthToken,
@"message": postMessage};
NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];
SLRequest *feedRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:feedURL parameters:parameters];
[feedRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"Request failed, %@", [urlResponse description]);
}];
} else {
NSLog(@"Access Denied");
NSLog(@"[%@]",[error localizedDescription]);
}
}];
}