【问题标题】:Android Facebook SDK 4.0.0 Sharing callback doesn't work properlyAndroid Facebook SDK 4.0.0 分享回调无法正常工作
【发布时间】:2015-05-04 12:23:25
【问题描述】:

我正在使用以下代码在 facebook 上分享链接。当用户在分享对话框界面点击取消时,有时会调用 onSuccess() 回调方法而不是 onCancel()。并让帖子 id 为空。请帮助我出了什么问题?

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);
}

【问题讨论】:

  • 我也遇到了同样的问题。你能解决这个问题吗?
  • 我也面临同样的问题。
  • 我也有同样的问题,在任何地方都找不到解决方案。看起来像 Android 版 Facebook SDK 中的错误或文档中缺少某些内容。

标签: android facebook-sdk-4.0


【解决方案1】:

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

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

【讨论】:

  • 我尝试使用PostId 来识别成功的发布操作,但正如您所说,当安装本机应用程序时,PostId 始终为空。在这种情况下,您有任何解决方案来检测取消吗?
  • 只需检查用户是否安装了 Facebook 包来执行一种或其他逻辑。
  • 当用户安装Facebook原生应用并通过单击对话框左上角的后退箭头按钮取消共享时,此解决方案失败,在这种情况下再次调用onSuccess,postId为空。
猜你喜欢
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多