2014-02-10 60 views
0

時,這是我的代碼將視頻發佈到Facebook來查詢當前的用戶錯誤信息:的主動訪問令牌必須使用發佈視頻在Facebook

ACAccountStore *accountStore = [[ACAccountStore alloc]init]; 

NSArray * p = [NSArray arrayWithObjects:@"email",@"basic_info", nil]; 

NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@"xxx",ACFacebookAppIdKey,p,ACFacebookPermissionsKey,ACFacebookAudienceEveryone,ACFacebookAudienceKey, nil]; 

NSDictionary *options = @{ 
          ACFacebookAppIdKey: @"xxx", 
          ACFacebookPermissionsKey: @[@"publish_actions",@"publish_stream, " ], 
          ACFacebookAudienceKey: ACFacebookAudienceFriends, 
          }; 
ACAccountType *facebookAccountType = [accountStore 
             accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

[accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) { 
    NSLog(@"blablalba"); 
    //do nothing here. 
    if (granted) { 
     [accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error) { 
      if (granted) { 
       NSLog(@"posting to fb.."); 


       NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me/videos"]; 

       NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
       NSURL *videoPathURL = [defaults URLForKey:@"vidURL"]; 

       //  NSURL *videoPathURL = [[NSURL alloc]initFileURLWithPath:videoPath isDirectory:NO]; 
       //  NSData *videoData = [NSData dataWithContentsOfFile:videoPath]; 
       NSData *videoData = [NSData dataWithContentsOfFile:[videoPathURL path]]; 

       NSString *status = @"One step closer."; 
       NSDictionary *params = @{@"title":status, @"description":status}; 

       SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook 
                 requestMethod:SLRequestMethodPOST 
                    URL:url 
                  parameters:params]; 

       [request addMultipartData:videoData 
           withName:@"source" 
            type:@"video/quicktime" 
           filename:[videoPathURL absoluteString]]; 

       [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
        if (error) { 
         NSLog(@"error: %@", error); 
        } 
        NSLog(@"httpresponse: %@", urlResponse); 
       }]; 
      } 
     }]; 
    } 

}]; 

但它的返回:

「OAuth \」Facebook Platform \「\」invalid_request \「\」必須使用活動訪問令牌來查詢有關當前用戶的信息。

我不知道我在想什麼。任何幫助?

回答

0

發現,我不得不令牌添加到PARAMS域:

NSString *status = @"One step closer."; 
NSDictionary *params = @{@"title":status, @"description":status, @"access_token":accessToken}; 

希望它可以幫助別人。

1

您忘記將facebook帳戶設置爲請求。 當您被授予訪問,獲取賬號:

      NSArray *accounts = [self.accountStore 
           accountsWithAccountType:fbAccountType]; 
         self.facebookAccount = [accounts lastObject]; 

和創建請求後,設置帳戶

[request setAccount:self.facebookAccount]; 
相關問題