2014-06-16 30 views
0

我很難弄清楚我在這裏做錯了什麼。任何幫助將非常感激。這是情況。我有一個圖像,我試圖自動分享到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}} 

回答

0

它看起來像,因爲Facebook的移動到圖形2.0,我們需要申請publish_actions權限,我們在創建developer.facebook.com應用。我們需要提交一個指向隱私政策的鏈接,填充大量元數據並提交構建,FB將對其進行審查並授予應用程序訪問權限,並且所有內容均應與上述代碼一起使用。

相關問題