Android Facebook SDK Share对话框:永远不会返回完成手势

Ale*_* A. 6 android facebook facebook-android-sdk

我在我的应用程序中使用facebook android sdk v3.5进行消息共享.对于统计信息,我需要跟踪邮件是否已成功发布.但是我总是因为进入FacebookDialog.getNativeDialogCompletionGesture而变得无效onActivityResult()

我使用的代码非常标准.

调用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());

    }
Run Code Online (Sandbox Code Playgroud)

我用来处理调用结果的代码:

    @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              
                    }
                }
            });
}
Run Code Online (Sandbox Code Playgroud)

在facebook sdk文档中声明:

FacebookDialog.getNativeDialogCompletionGesture - 仅当用户使用Facebook登录您的应用程序并且完成时才可用.值为"post"或"cancel".

但我无法理解这句话究竟是什么意思.

Min*_* Li 3

这意味着,只有当用户“验证”了您的应用程序(即他们在您的应用程序中单击了某种形式的通过 Facebook 登录按钮,并为您的应用程序授予了至少基本权限)时,您才会获得完成手势。

如果没有,那么您得到的只是 getNativeDialogDidComplete,它始终返回 true(无论用户单击“共享”还是“取消”),除非发生错误。