2013-07-29 17 views
4

摘要:試圖在Facebook上發佈圖像和描述。如果圖片網址爲空,我使用本地可繪製的默認圖片上傳到照片。上傳照片到Facebook:在執行newUploadPhotoRequest調用之前添加參數會導致'OAuthException'錯誤

要上傳本地圖片,我使用下面的代碼:

我的代碼:

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的參數?

回答

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(); 
+0

啊,那是一個有用的信息位。解決方案奏效。 – snehatilak

+0

@MingLi是否可以將位置添加到上傳的照片中? – Casper

+0

使用上面添加一些文本:parameters.putString(「message」,description); 和它完美的工作:) – cV2

相關問題