1

FacebookSDK3を使用して(ios)コードからユーザーのFacebookに画像をアップロードして投稿し、friendPickerControllerビューを表示し、友達の配列を選択して、写真にタグを付けようとしています。

これは実際のタグ付けのコードです。正常に実行されますが、デバッガーでエラーが発生します。エラー:HTTPステータスコード:200エラー:HTTPステータスコード:400、stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncodingをグラフに適用した場合道。権限タイプのエラーのようです。(このメソッドは、写真が正常にアップロードされた後に呼び出されます。self.upLoadedPicIDは投稿のfbIDを持つNSStringであり、self.tagListはオブジェクト(タグのfacebuddies)のNSMutableArrayです。 friendPickerControllerから。

 -(void)tagFriends{

    if ([self.tagList count] > 0 && imageUploaded && [self.upLoadedPicID length]) {
    self.activityLabel.text = @"Tagging Photo";
    [self setSpindicatorOn:YES];

    NSMutableString *graphPath = [NSMutableString string];
    [graphPath appendString:self.upLoadedPicID];
    [graphPath appendString:[NSString stringWithFormat:@"/tags?tags=["]];


    // loopthru tag array..

    NSMutableString *iDs = [NSMutableString string];

    for (id<FBGraphUser> user in self.tagList) {

               if ([iDs length]) {
                [iDs appendString:@", "];
               }  //deliniate after first entry..

      NSString *entry = [NSString stringWithFormat:@"{\"tag_uid\":\"%@\"}", user.id];
      [iDs appendString:entry];
      }


    [graphPath appendString:iDs];[graphPath appendString:[NSString stringWithFormat:@"]&access_token=%@",[FBSession activeSession].accessToken]];
 //  NSLog(@"building graph path for tAgging %@", graphPath);
   //works fine
    FBRequestConnection *connection = [[FBRequestConnection alloc]init];
    FBRequest *request = [FBRequest requestForGraphPath:graphPath];


  // do i need URL encoding???

 //   NSString* escapedUrlString = [graphPath stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
  //  FBRequest *request = [FBRequest requestForGraphPath:escapedUrlString];

   // dont think so..

   [connection addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error){

//     if (error) {
//       NSLog(@"error tagging");
       [self setSpindicatorOn:NO];
//     }else{
//       NSLog(@"done tagging");
//       [self setSpindicatorOn:NO];}
//   
     [self showAlert:@"done Tagging" result:result error:error];


   } batchEntryName:nil];
    [connection start];
   // [request ]
  }

}

fbSessionはappDelegateで割り当てられ、これが表示される前にfbViewcontrollersに渡されるので、おそらく私の問題は、ここで使用したアクセス許可ですか?ここで使用する代替のアクセス許可文字列に関するドキュメントが見つかりません。

self.fbLoginView = [[FBLoginView alloc]initWithPermissions:[NSArray arrayWithObject:@"publish_actions"]];

もう1つの可能性は、Facebookエンドアプリに適切な権限を設定していないことです。これを編集できますが、ドロップダウンメニューなどの直感的なものではなく、テキストエントリのみであり、すべてのリストを見つけることができます。 GraphApiの権限については、写真への友達のタグ付けについては言及されていません。廃止されたREST APIでは不十分であるというドキュメントがありますが、GraphApiで「ストリームの公開」権限で十分かどうかは不明です。publish_stream_extended権限が必要でしたが、できません。 GraphAPIの対応する権限を参照してください。

どこが間違っているのか教えていただければ、永遠に感謝します。重複する質問がある場合はお詫びします。廃止されたREST APIとFacebookが発行したさまざまなSDKのために、私は調べてみました。何が変わったのか、何が変わっていないのかを確認するのは非常に困難です。

誰かが知っているなら、私は重要な質問だと思います

  1. 友達に写真をタグ付けする権限を持たせるために、Facebookサーバーサイドアプリで行う権限設定は何ですか?
  2. Facebookセッションオブジェクトに初期化するための対応する権限は何ですか?
  3. Facebookはあなたにこれをもうやらせたくないのですか、そしてこれがドキュメントが非常に少ない理由ですか?
  4. 私はここで間違った木を完全に吠えていますか?

これを読んでくれてありがとう:)

4

1 に答える 1

1
  1. 写真の友達にタグを付けることができるように、user_photosの権限を要求します
  2. 最新のFacebookSDKv3.1では、iOS6を利用するために、読み取り/書き込み権限を分割する必要があります。写真を公開しようとしているときに、最初にuser_photos権限を要求し、コンテキストでpublish_actions権限を要求します。
  3. 権限を説明するドキュメントはここにあります:https ://developers.facebook.com/docs/reference/api/photo/

ヒント:行き詰まったときはいつでも、Graph API Explorerに移動し、さまざまな権限や入力などで遊んで、コードに進む前に書き込みを取得するか、行き詰まった場合はそれを使用してください。

于 2012-09-29T01:19:45.750 に答える