Android Facebook SDK 分享对话框 : never return Completion Gesture

标签 android facebook facebook-android-sdk

我在我的应用程序中使用 facebook android sdk v3.5 进行消息共享。对于统计信息,我需要跟踪消息是否已成功发布。但是,我总是通过在 onActivityResult()

中获取 FacebookDialog.getNativeDialogCompletionGesture 来获取 null

我使用的代码非常标准。

调用 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 - Only available if the user logged into your app using Facebook and did complete is true. Value is either "post" or "cancel".

但我不明白他们所说的这句话到底是什么意思。

最佳答案

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

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

关于Android Facebook SDK 分享对话框 : never return Completion Gesture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19012681/

相关文章:

android - 在一个表单或类中,我们可以在android开发中添加多少选项卡?

java - 如何从 reSTLet ClientResource 获取响应?

javascript - Facebook sharer.php - 默认 View

java - Android Facebook 登录 API 仅返回名称和 ID

android - 在 Android 上使用访问 token 创建 Facebook session 对象

android - 媒体控制通知在 Android O 上发出警报

Android 风格 - @style、android :, @android :style, 等之间的区别

android - 使用 Facebook 等从 Android 客户端登录到 Openfire 服务器

Android Activity 不显示

android - 将 Facebook 集成到 Android 应用程序中以通过 Facebook 转换广告