2012-04-05 27 views
0

Facebookのアプリケーションに取り組んでいますが、現在、自分のアプリのタグをユーザーの友だちの1つにしようとしています。人にタグを付けることを想定している場合を除いて、私はほぼ100%動作していますが、代わりに次のエラーメッセージが表示されます。Android Facebookサポートされていない投稿リクエストエラー

{"エラー":{"メッセージ": "サポートされていない投稿要求"、 "タイプ: "GraphMethodException"、 "code":100}}

ユーザーIDと写真IDは間違いなく正しいですが、これは問題ではありません。それ以外の場合は、このエラーの原因となるものが他に何かあるかどうかはわかりません。コードは以下のとおりです。どうもありがとう!

public void setTag() { 
    String relativePath = Constants.photoID + "/tags/" + Constants.userID; 
    Bundle params = new Bundle(); 
    params.putString("x", "5"); 
    params.putString("y", "5"); 
    Constants.mAsyncRunner.request(relativePath, params, "POST", new TagPhotoRequestListener(), 
      null); 
} 



public class TagPhotoRequestListener extends BaseRequestListener { 

@Override 
public void onComplete(final String response, final Object state) { 
    if (response.equals("true")) 
    { 
     String message = "User tagged in photo at (5, 5)" + "\n"; 
     message += "Api Response: " + response; 
     Log.i("TagPhotoRequestListener", message); 
    } 
    else 
    { 
     Log.w("TagPhotoRequestListener", "User could not be tagged."); 
    } 
} 

public void onFacebookError(FacebookError e) { 
    Log.w("TagPhotoRequestListener", "Facebook Error: " + e.getMessage()); 
} 

}

編集:ここでは、画像の投稿やPHOTOIDを取得するための私のコードです。テスト目的のために、それは私のSDカードからの単なる写真です。

public void postPhoto() { 
    byte[] data = null; 

    Bitmap bi = BitmapFactory.decodeFile("/mnt/sdcard/Download/KathleenSchedule.jpg"); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
    data = baos.toByteArray(); 

    Bundle params = new Bundle(); 
    params.putString(Facebook.TOKEN, Constants.mFacebook.getAccessToken()); 
    params.putString("method", "photos.upload"); 
    params.putByteArray("picture", data); 

    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(Constants.mFacebook); 
    mAsyncRunner.request(null, params, "POST", new PhotoUploadListener(), null); 
} 


public class PhotoUploadListener extends BaseRequestListener { 

@Override 
public void onComplete(final String response, final Object state) { 
    try { 
     // process the response here: (executed in background thread) 
     Log.d("PhotoUploadListener", "Response: " + response.toString()); 
     JSONObject json = Util.parseJson(response); 
     System.out.println(response); 
     final String photo_id = json.getString("pid"); 
     Constants.photoID = photo_id; 
+0

* relativePath *の内部に結果の文字列を投稿できますか?また、ドキュメントによると、* PHOTO_ID/tags/USER_ID *または* PHOTO_ID/tags?to = USER_ID *にタグを投稿することができます。後で試してみましたか? –

+0

私はちょうど運がないと後で試しました。相対パスはアプリケーションの実行ごとに変更され、アプリケーションピクチャは新しいピクチャを撮影した後にアップロードされタグが付けられます。しかし、最近のrelativePathの例があります: 100003703122664_62586/tags/100003702982567 – justbaum30

+0

この写真のIDは本当にわかりましたか?それは正しいとは思わない。あなたはどのように写真のIDを取得しますか?つまり、* Constants.photoID *はどこから来ますか? –

答えて

0

これで問題は解決しました。

あなたは推奨されませんphotos.upload方法を使用している:あなたは、この機能を使用しないでください新しいアプリケーションを 構築しているので、もし私たちは、RESTのAPIを非推奨の過程にある

を。古い方法、あなたが取得していると、古い応答タイプを使用しているので代わりに はUser object

の写真接続にGraph APIとPOSTを使用しています。 グラフapiの使い方に切り替えると、写真IDを返信する必要があります。

+0

ああ、そうだ。私はGraph APIを使っていると思っていました。私の意見では、Android用のドキュメントはかなり貧弱です。私はグラフAPIメソッドが何であるかを見なければならないでしょう。ありがとう。 – justbaum30

+0

あなたは何かを見逃していると思います...グラフapiはアンドロイドとは関係がありません。これはurl(httpリクエスト)に基づいたapiであり、必要な方法でアクセスできます。 android sdk(jsやphpのようなもの)は、あなたのためにhttpリクエストをラップするだけです。グラフAPIのドキュメントについては、Android SDKのドキュメントではなく、グラフAPIドキュメントを確認してください。 –

+0

申し訳ありませんが、私はそれをチェックします、おかげで再び芽。 – justbaum30

関連する問題