2012-06-20 117 views
0

我無法上傳從SD卡在Facebook上的圖像...我用下面的代碼....但它沒有給我錯誤,但在同一時間它沒有上傳圖片從android SD卡上傳圖片到facebook

 byte[] data = null; 
    try { 
     FileInputStream fis = new FileInputStream(filepath); 
     BitmapFactory.Options options = new BitmapFactory.Options();     
      options.inSampleSize = 2; 
     Bitmap bi = BitmapFactory.decodeStream(fis); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     data = baos.toByteArray(); 
     } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     Log.d("onCreate", "debug error e = " + e.toString()); 
     }  

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

回答

0

你必須這樣做:

mAsyncRunner = new AsyncFacebookRunner(fbObj); 
    mAsyncRunner.request(null, parameters, "POST", 
         new RequestListener() { 

          @Override 
          public void onMalformedURLException(
            MalformedURLException e, Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onIOException(IOException e, Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onFileNotFoundException(
            FileNotFoundException e, Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onFacebookError(FacebookError e, 
            Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onComplete(String response, Object state) { 
           // TODO Auto-generated method stub 
           Log.i("upload", "image uploaded!!!! " + response); 
          } 
         }, null); 
+0

我增加了這段代碼,但在facebook對話框中顯示「發生錯誤」,請稍後重試。 –

+0

它在logcat中顯示的內容?貼吧在這裏 –

+0

{「錯誤」:{「消息」:「一個積極的訪問令牌必須用於查詢當前用戶的信息。」,「類型」:「OAuthException」,「代碼」:2500}} –

1

嘗試以下摘錄從SD卡後的圖像:

轉換圖像爲位圖,然後繼續

private void postToWall() { 
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.PNG, 100, stream); // where bm is bitmap from Sdcard 
    byte[] byteArray = stream.toByteArray(); 
    Bundle param = new Bundle(); 
    param = new Bundle(); 
    param.putString("message", "All"); 
    param.putString("filename", "TEst"); 
    param.putByteArray("image", byteArray); 
    mAsyncRunner.request("me/photos", param, "POST", new fbRequestListener(), null); 
    } 

    public class fbRequestListener implements RequestListener { 

     @Override 
     public void onComplete(String response, Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+response); 

     } 

     @Override 
     public void onIOException(IOException e, Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+e); 

     } 

     @Override 
     public void onFileNotFoundException(FileNotFoundException e, 
       Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+e); 

     } 

     @Override 
     public void onMalformedURLException(MalformedURLException e, 
       Object state) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onFacebookError(FacebookError e, Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+e); 

     } 

     } 
+0

{「error」:{「message」:「必須使用活動的訪問令牌來查詢有關當前用戶的信息。」,「type」:「OAuthException」,「code」:2500} –

+0

傳遞附加參數:param。 putString(「access_token」,「您的訪問令牌」); – Venky

+0

爲什麼在我已經登錄時需要它?反正已經ACCESS_TOKEN –