4

摘要:尝试在 Facebook 上发布图片和描述。如果图像 URL 为空,我使用本地可绘制默认图像上传到照片。

要上传本地图像,我使用以下代码:

我的代码:

Request.Callback uploadPhotoRequestCallback = new Request.Callback() {
    @Override
    public void onCompleted(Response response) {
        if (response.getError() != null) { 
            //post error
        } else{
            String uploadResponse = (String) response.getGraphObject().getProperty("id");
            if (uploadResponse is valid) { 
                  parameters.putString("message", description);
            } else { 
                  //error
            } 
        }
    }
};

Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), BitmapFactory.decodeResource(_context.getResources(), R.drawable.default_image), uploadPhotoRequestCallback);
        request.setParameters(parameters);
        Request.executeBatchAsync(request);

这通过以下方式执行:

{HttpStatus: 400, errorCode: 324, errorType: OAuthException, errorMessage: (#324) Requires upload file}

注意事项:
1.图片上传成功没有 request.setParameters(parameters);
2.试过parameters.putString("name", description);而不是 parameters.putString("message", description);

为什么添加参数会导致 OAuthException?

4

1 回答 1

10

当您创建 newUploadPhotoRequest 时,该方法将隐式添加一些参数到返回的 Request 对象。当您调用 setParameter 时,您将用您自己的参数替换那些隐式参数,这会导致请求缺少一些必需的参数。

你应该做的是:

Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), BitmapFactory.decodeResource(_context.getResources(), R.drawable.default_image), uploadPhotoRequestCallback);
Bundle parameters = request.getParameters(); // <-- THIS IS IMPORTANT
parameters.putString(...);
// add more params here
request.setParameters(parameters);
request.executeAsync();
于 2013-07-29T16:40:12.933 回答