0

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

{"error":{"message": "サポートされていないPOSTリクエスト。"、 "type": "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カードからの1枚の写真です。

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;
4

1 に答える 1

0

さて、あなたの問題は明らかです。

非推奨のphotos.uploadメソッドを使用しています。

現在、REST APIの廃止を進めているため、新しいアプリケーションを構築する場合は、この関数を使用しないでください。代わりに、GraphAPIとPOSTを使用してUserオブジェクトの写真接続に接続します

古いメソッドを使用しているため、古い応答タイプを取得しています。グラフAPIの使用に切り替えると、応答で写真IDを取得する必要があります。

于 2012-04-05T14:28:47.853 に答える