2011-07-14 107 views
2

我們可以發短信給Facebook朋友的牆上一條短信,但是我們如何使用Android Facebook SDK將圖片,圖片發佈到朋友的牆上?Android如何將圖片發佈到朋友的牆上用facebook android sdk

當我打印出牆壁變量時,它確實顯示USER_ID/feed。發佈後,RequestListener的onComplete函數確實被調用,但沒有任何內容發佈到朋友牆上。

這裏的示例代碼,我們正在嘗試使用:

Bundle params = new Bundle(); 
params.putString("method", "photos.upload"); 
params.putString("caption", photoCaption.getText().toString()); 
params.putByteArray("picture", data); 

AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 

String wall = null; 
wall = fArray.getJSONObject(pos).getString("id").toString() + "/feed"; 

mAsyncRunner.request(wall, params,"POST", new RequestListener(){ 

    public void onComplete(String response, Object state) { 
     Log.d("text","facebook post complete"); 
    } 

    public void onIOException(IOException e, Object state) { 
     Log.d("text","facebook post onIOException"); 
    } 

    public void onFileNotFoundException(FileNotFoundException e, Object state) { 
     Log.d("text","facebook post onFileNotFoundException"); 
    } 

    public void onMalformedURLException(MalformedURLException e, Object state) { 
     Log.d("text","facebook post onMalformedURLException"); 
    } 

    public void onFacebookError(FacebookError e, Object state) { 
     Log.d("text","facebook post error"); 
    } 

}, null); 

這是我如何得到好友列表:

AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 

mAsyncRunner.request("me/friends", new RequestListener(){ 

    public void onComplete(String response,Object state) { 
    try { 
     jObject = new JSONObject(response); 
     fArray = jObject.getJSONArray("data"); 

回答

3

這是我用它來發布圖片的方法牆,它張貼從一個URL的圖片,但你可以改變它爲圖片而不是byte[]。該信息出現在圖片上方,標題出現在圖片的右側。

protected void postPicToWall(String userID, String msg, String caption, String picURL){ 
    try { 
     if (isSession()) { 
      String response = mFacebook.request((userID == null) ? "me" : userID); 

      Bundle params = new Bundle(); 
      params.putString("message", msg); 
      params.putString("caption", caption); 
      params.putString("picture", picURL); 

      response = mFacebook.request(((userID == null) ? "me" : userID) + "/feed", params, "POST");  

      Log.d("Tests",response); 
      if (response == null || response.equals("") || 
        response.equals("false")) { 
       Log.v("Error", "Blank response"); 
      } 
     } else { 
      // no logged in, so relogin 
      Log.d(TAG, "sessionNOTValid, relogin"); 
      mFacebook.authorize(this, PERMS, new LoginDialogListener()); 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

編輯:

要發佈一個字節[]而不是URL到PIC,然後用

params.putByteArray("picture", getIntent().getExtras().getByteArray("data"));

替換行

params.putString("picture", picURL);,其中數據是您的陣列。

+0

您使用什麼方法發佈字節[]而不是URL? –

+0

查看我已添加到答案底部的修改。但我知道發佈了一個字節[]的錯誤,所以不知道它是否已修復 - 自從我嘗試了幾個月後,它已經過去了!讓我知道它是否正常工作。 – Kenny

+0

我甚至不確定它是一個「bug」還是通常愚蠢的facebook實現。它不適用於方法我/飼料。它可以和我的方法/照片一起工作,但這不是真的牆貼,它只是去用戶的畫廊(可能會或可能不會在他們的牆上)。 –

0

使用捆綁方法。

Bundle params = new Bundle(); 
     params.putString("message", "Test Post from karthick"); 
     params.putString("caption", "Karthick kumar"); 

     params.putString("name", "Hai Dude"); 
     **params.putString("icon", "http://www.facebook.com/images/icons/default_app_icon.gif");** 
     params.putString("source", link); 

,然後用... mAsyncRunner.request(牆,則params, 「POST」,新RequestListener());

相關問題