Android Facebook SDK检查共享是否成功

时间:2015-12-07 14:15:10

标签: android facebook callback share facebook-android-sdk

我开发的Android应用程序应该允许用户在Facebook上分享帖子。对于统计数据,我想知道用户是否已成功共享帖子或决定取消。

问题:有没有办法检查是否使用Facebook SDK 4.5中的ShareDialog成功共享了帖子,没有publish_action权限?

ShareDialog打开Facebook App share对话框,如果共享成功,则调用回调函数中的onSuccess方法(如果用户取消共享对话框,则调用onCancel)。问题是当用户没有在他的设备上安装Facebook App时。然后ShareDialog回退到默认浏览器进行共享,但在这种情况下总是执行回调函数onSuccess方法,即使用户点击了取消按钮!

我目前的代码如下:

FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>() {
    @Override
    public void onCancel() {
        Log.d(LOG_TAG, "fb SHARE canceled");
    }

    @Override
    public void onError(FacebookException error) {
        Log.d(LOG_TAG, "fb SHARE error");
    }

    @Override
    public void onSuccess(Sharer.Result result) {

        String postId = result.getPostId();
        if (postId != null)
        {
            // record successful FB share
            Log.d(LOG_TAG, "fb SHARE success");
        }
    }
}

FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
shareDialog.registerCallback(callbackManager, shareCallback);

此代码运行正常,但需要publish_actions权限才能检查postId。是否有其他方法可以检查共享是否成功,而无需Facebook的额外(publish_actions)权限(因为这太痛苦了)?

1 个答案:

答案 0 :(得分:2)

有一种方法可以解决这个问题。 当你与Facebook的应用程序分享时, postId 总是为空。在没有FB应用程序的情况下共享时, PostId 会进入您的onSuccess回调。 解决方案是强制您的应用程序使用Web Feed而不是FB应用程序进行共享:

shareDialog.show(linkContent, ShareDialog.Mode.FEED);