2013-09-25 53 views
6

我在我的應用程序中使用facebook android sdk v3.5進行消息共享。對於需要跟蹤消息是否成功發佈的統計信息。不過,我總是得到空FacebookDialog.getNativeDialogCompletionGestureonActivityResult()Android Facebook SDK共享對話框:永不返回完成手勢

我使用的代碼是非常標準的。

代碼調用Facebook共享對話框:我使用過程調用結果

private void sendToFacebook() 
    { 
     if (!FacebookDialog.canPresentShareDialog(getActivity().getApplicationContext(),  FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) 
     { 
     return; 
     } 

     FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(getActivity()) 
       .setName(getString(R.string.refer_friend_facebook_name)) 
       .setDescription(getString(R.string.refer_friend_facebook_description)) 
       .setCaption(getString(R.string.facebook_app_name)) 
       .setLink(getString(R.string.web_endpoint)) 
       .setPicture(getString(R.string.facebook_picture_90)) 
       .build(); 

     activity.getFacebookUiHelper().trackPendingDialogCall(shareDialog.present()); 

    } 

代碼:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      facebookUiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() 
      { 
       @Override 
       public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) 
       { 
       // track on error             
       } 

       @Override 
       public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) 
       { 
        if (FacebookDialog.getNativeDialogDidComplete(data)) 
        { 
         if (FacebookDialog.getNativeDialogCompletionGesture(data) == null 
           || FacebookDialog.COMPLETION_GESTURE_CANCEL.equals(FacebookDialog.getNativeDialogCompletionGesture(data))) 
         { 
          // track cancel             
         } 
         else 
         { 
          // track post 
         } 
        } 
        else 
        { 
         // track cancel    
        } 
       } 
      }); 
} 

了Facebook SDK文檔則指出:

FacebookDialog。 getNativeDialogCompletionGesture - 僅當用戶使用Facebook登錄到您的應用程序並確實完成時纔可用。值是「發佈」或「取消」。

但我不明白這句話究竟是什麼意思。

回答

3

這意味着如果用戶已經「認證」你的應用(即他們點擊了某種形式的通過Facebook上的登錄按鈕在你的應用中,並給予你的應用至少基本的權限),那麼你只能得到completionGesture。

如果他們沒有,那麼所有你得到的是getNativeDialogDidComplete,它總是返回true(無論用戶點擊「Share」還是「Cancel」),除非發生錯誤。

+1

謝謝!這解釋了這個問題。然而,從臉譜來看,這很奇怪。 –

+0

爲什麼Facebook?我們是否通過默認的Facebook應用程序使用單點登錄?爲什麼我們需要這個? – BQuadra

+1

基本原因歸結爲,如果用戶沒有通過FB授權您的應用程序,那麼您的應用程序無法知道用戶在FB上做了什麼。 –

相關問題