【发布时间】:2015-07-04 08:31:19
【问题描述】:
我已将使用 SLRequest 的 Facebook 共享功能集成到我的 iOS 应用程序中。一切正常,但每次我想发帖时,都会向用户显示一个提示,询问是否应允许该应用代表他发帖。
出于某些原因(我从 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]);
}
}];
}
【问题讨论】:
标签: ios objective-c facebook-graph-api watchkit apple-watch