2015-05-04 69 views
9

我正在使用以下代碼在Facebook上共享鏈接。當用戶單擊共享對話框界面上的取消時,有時會調用onSuccess()回調方法,而不是onCancel()。並獲得職位ID null.Please幫助我出了什麼問題?Android Facebook SDK 4.0.0共享回調無法正常工作

ShareButton btn; 
CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(this); 
    callbackManager = CallbackManager.Factory.create(); 
    setContentView(R.layout.activity_share); 

    btn = (ShareButton) findViewById(R.id.btn_share); 

    btn.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 
     @Override 
     public void onSuccess(Sharer.Result result) { 
      Log.e("Tag","Successfully posted"); 
      Log.e("Post id",result.getPostId()); 
     } 

     @Override 
     public void onCancel() { 

      Log.e("Tag","Canceled by user"); 

     } 

     @Override 
     public void onError(FacebookException error) { 

      Log.e("Tag",error.getLocalizedMessage()); 
     } 
    }); 
    ShareLinkContent content = new ShareLinkContent.Builder() 
      .setContentUrl(Uri.parse("My Custom URL")) 
      .setContentTitle("Test") 
      .build(); 

    btn.setShareContent(content); 

} 

@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 
+0

我遇到同樣的問題。你能解決這個問題嗎? – cjserio

+0

我也面臨同樣的問題。 – Shankar

+0

我也有同樣的問題,無法找到解決方案。看起來像Android的Facebook SDK中的錯誤或文檔中缺少的東西。 –

回答

3

嗯,也許我遲到了,但幾周前我面臨同樣的問題。 我注意到的是,如果您在基於Web的共享對話框中按下取消,則會調用onSuccess()方法,但Share.Result對象包含空postId,因此只要用戶通過檢查按下取消或共享Share.Result響應。

我注意到的另一件事是,如果您與安裝的本地應用程序共享內容,postId字段始終爲空......所以您將不得不檢查用戶是否安裝了應用程序來檢查或不檢查postId字段。

+0

我試過使用'PostId'來標識成功發佈操作,但正如你所說當安裝本地應用程序時'PostId'始終爲空。在這種情況下,您是否有任何解決方案來檢測取消? – agarwaen

+0

只需檢查用戶是否安裝了Facebook軟件包來執行一個或其他邏輯。 – ablanco

+0

當用戶安裝Facebook本地應用並通過單擊對話框左上角的後退箭頭按鈕取消共享時,此解決方案失敗,在這種情況下,再次調用onSuccess,並且postId爲空。 – NecipAllef

相關問題