2011-11-09 40 views
0

我已將Facebook-sdk成功集成到我的應用程序中。 現在我要分享一張照片到Facebook。要做到這一點,我使用此代碼:爲什麼我的代碼無法在Android上從Facebook上傳照片?

facebook.authorize(DrawingActivity.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {      
       @Override      
       public void onComplete(Bundle values) {}      
       @Override      
       public void onFacebookError(FacebookError error) {}      
       @Override      
       public void onError(DialogError e) {}      
       @Override      
       public void onCancel() {}     
      }); 


      byte[] data = null; Bitmap bi = BitmapFactory.decodeFile(APP_FILE_PATH + "/myAwesomeDrawing.png"); 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
      data = baos.toByteArray(); 
      Bundle params = new Bundle(); 
      params.putString("method", "photos.upload"); 
      params.putByteArray("picture", data); 
      AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
      mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null); 

和另一個代碼:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    facebook.authorizeCallback(requestCode, resultCode, data); 
} 

public class SampleUploadListener extends BaseRequestListener {  
    public void onComplete(final String response, final Object state) {   
     try {    
      // process the response here: (executed in background thread)    
      Log.d("Facebook-Example", "Response: " + response.toString());    
      JSONObject json = Util.parseJson(response);    
      final String src = json.getString("src");    
      // then post the processed result back to the UI thread    
      // if we do not do this, an runtime exception will be generated    
      // e.g. "CalledFromWrongThreadException: Only the original    
      // thread that created a view hierarchy can touch its views."   
     } catch (JSONException e) {    
      Log.w("Facebook-Example", "JSON Error in response");   
     } catch (FacebookError e) {    
      Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());   
     }  
    }  
    public void onFacebookError(FacebookError e, Object state) {   
     // TODO Auto-generated method stub  
    } 
} 

現在,我不知道爲什麼我不能夠獲得在Facebook上上傳圖片?

+0

究竟不起作用? – 2011-11-09 12:49:48

+0

@alextsc:我無法發佈照片。但是,雖然我第二次點擊Facebook按鈕,它會張貼照片。 –

+0

大家可以有人告訴我爲什麼在這一行中獲取錯誤「facebook.authorize(DrawingActivity.this,new String [] {」user_photos,publish_checkins,publish_actions,publish_stream「},新的DialogListener(){」即使在導入android facebook sdk ??? –

回答

1

取決於你想要做什麼,你需要給一個目標(第一空)這行代碼:

mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null); 

例如,如果你正在努力讓自己在當前的後用戶應該看起來像:

mAsyncRunner.request("me/posts", params, "POST", new SampleUploadListener(), null); 

您將需要正確的權限來執行此操作:至少publish_stream。

docs

+1

好吧然後我應該寫什麼?「我/帖子」或「我」或「帖子」? –

+0

我仍然不是能夠第一次張貼照片,但第二次按下fecebook按鈕時,它會張貼照片。 –