Android Facebook不支持的帖子请求错误

时间:2012-04-05 08:38:55

标签: java android facebook sdk

我正在开发一个Facebook应用程序,目前正在尝试让我的应用程序标记用户的朋友之一。我几乎让它100%工作,除非它应该标记该人,否则我会收到一条错误消息:

{“error”:{“message”:“不支持的帖子请求。”,“类型”:“GraphMethodException”,“code”:100}}

用户和照片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;

1 个答案:

答案 0 :(得分:0)

好的,现在问题很明显了。

您使用的是不推荐使用的photos.upload方法:

  

我们正在弃用REST API,所以如果你是   构建一个新的应用程序,你不应该使用此功能。代替   使用Graph API和POST到User object

的照片连接

因为您使用的是旧方法,所以您将获得旧的响应类型。 切换到使用图形api方式,您应该在响应中获取照片ID。