我很難弄清楚我在這裏做錯了什麼。任何幫助將非常感激。這是情況。我有一個圖像,我試圖自動分享到Facebook。因此,根據Facebook的最佳做法,我首先獲得了基本權限,然後獲得了publish_actions權限。當我試圖張貼圖片時,沒有發佈錯誤,但NSURLResponse顯示了這一點。使用SLRequest將圖像發佈到Facebook使用Graph2.0後無法使用
"Www-Authenticate" = "OAuth \"Facebook Platform\" \"insufficient_scope\" \"(#200) Permissions error\"";
這裏是我使用的分享至Facebook的代碼。
- (void) loginViaFacebookWithPublishCredentialsWithResponse:(BGResponseBlock)block
{
if(!self.accountStore)
{
self.accountStore = [[ACAccountStore alloc] init];
}
ACAccountType *facebookTypeAccount = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[self.accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey: FacebookAppIDKey,
ACFacebookPermissionsKey: @[@"publish_actions"],
ACFacebookAudienceKey: ACFacebookAudienceEveryone}
completion:^(BOOL granted, NSError *error)
{
if(granted)
{
NSArray *accounts = [self.accountStore accountsWithAccountType:facebookTypeAccount];
self.facebookAccount = accounts.lastObject;
ACAccountCredential *fbCredential = [self.facebookAccount credential];
if([fbCredential oauthToken])
{
if(block)
{
block([fbCredential oauthToken],nil);
}
}
}
else
{
if([error code] == 6)
{
if(block)
{
block(nil,error);
}
}
else
{
NSLog(@"The original error while trying to log into facebook is %@", error);
NSError *accessDeniedError = [NSError errorWithDomain:@"Access Denied" code:999 userInfo:nil];
if(block)
{
block(nil,accessDeniedError);
}
}
}
}];
}
- (void) autoShareViaFacebook:(UIImage *)image withCaption:(NSString *)caption andResponseBlock:(void(^)(BOOL sharedSuccessfullyViaFB, NSError *error))block
{
NSBlockOperation *uploadOperation = [[NSBlockOperation alloc] init];
[uploadOperation addExecutionBlock:^
{
[self loginViaFacebookWithPublishCredentialsWithResponse:^(id responseObject, NSError *error)
{
if(responseObject && !error)
{
NSDictionary *parameters = @{@"message":caption};
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://graph.facebook.com/me/photos"] parameters:parameters];
request.account = self.facebookAccount;
[request addMultipartData:UIImageJPEGRepresentation(image, 0.8) withName:@"source" type:@"multipart/form-data" filename:caption];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
//NSError *jsonParsingError = nil;
if (error)
{
// Post error data to NSLog
NSLog(@"SLRequest Error: %@", error);
if(block)
{
block(NO, error);
}
}
else
{
NSLog(@"Facebook autoshare successful!");
if(block)
{
block(YES,nil);
}
}
}];
}
else
{
dispatch_async(dispatch_get_main_queue(), ^{
if(block)
{
block(NO,error);
}
});
}
}];
}];
[[BGSocialInstance sharedInstance].operationQueue addOperation:uploadOperation];
}
當我打印出NSURLResponse時,這就是我所得到的。
po urlResponse
<NSHTTPURLResponse: 0x15e26430> { URL: https://graph.facebook.com/me/photos } { status code: 403, headers {
"Access-Control-Allow-Origin" = "*";
"Cache-Control" = "no-store";
Connection = "keep-alive";
"Content-Length" = 83;
"Content-Type" = "application/json; charset=UTF-8";
Date = "Mon, 16 Jun 2014 17:52:11 GMT";
Expires = "Sat, 01 Jan 2000 00:00:00 GMT";
Pragma = "no-cache";
"Www-Authenticate" = "OAuth \"Facebook Platform\" \"insufficient_scope\" \"(#200) Permissions error\"";
"X-FB-Debug" = "fH7p9jHKmUDEWpa36iKKp0T8zrAu3gyx46oqdzB1fmgEJMEhYuYDgJ33R7lDXfVXG5PGzrQCDXYUxtgh73sFOA==";
"X-FB-Rev" = 1292193;
} }
而打印時的響應數據總是給出這個。
resposedata:{"error":{"message":"(#200) Permissions error","type":"OAuthException","code":200}}