Android Facebook SDK 4.0.0共享回调无法正常工作

Har*_*att 9 android facebook-sdk-4.0

我正在使用以下代码在Facebook上分享链接.当用户在"共享"对话框界面上单击"取消"时,有时会调用onSuccess()回调方法而不是onCancel().并获得post id null.请帮我解决问题?

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

小智 3

好吧,也许我迟到了,但几周前我遇到了同样的问题。我注意到,如果您在基于 Web 的“共享”对话框中按“取消”,则会调用 onSuccess() 方法,但 Share.Result 对象包含一个空 postId,因此您可以通过检查用户何时按下“取消”或“共享”来控制分享.结果响应。

我注意到的另一件事是,如果您在安装了本机应用程序的情况下共享内容,则 postId 字段始终为空...因此您必须检查用户是否安装了该应用程序来检查 postId 字段。