【问题标题】:Facebook MessageDialog callback not workingFacebook MessageDialog 回调不起作用
【发布时间】:2015-06-27 14:42:16
【问题描述】:

我正在开发通过 Facebook Messenger 应用程序将链接 + 内容发送给用户的 Facebook 朋友的功能。

首先,我使用 facebook-android-sdk-4.3

并编写如下代码

callbackManager = CallbackManager.Factory.create();

messageDialog = new MessageDialog(this);
messageDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
    @Override
    public void onSuccess(Sharer.Result result) {
        Log.e(TAG, "send success")
    }

    @Override
    public void onCancel() {
        Log.e(TAG, "send cancel")
    }

    @Override
    public void onError(FacebookException e) {
        Log.e(TAG, "send error")
    }
});

if (MessageDialog.canShow(ShareLinkContent.class)) {

  ShareLinkContent linkContent = new ShareLinkContent.Builder()
          .setContentTitle("....")
          .setContentDescription(message)
          .setContentUrl(....)
          .setImageUrl(Uri.parse(.....))
          .build();

  messageDialog.show(linkContent);
}

然后我覆盖了onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  callbackManager.onActivityResult(requestCode, resultCode, data);
  super.onActivityResult(requestCode, resultCode, data);
}  

最后,我运行应用程序,按发送,打开发送消息对话框。 和

  • 我按下发送消息,onSuccess 被调用
  • 我按返回键取消,onSuccess 也呼叫了。 :((((

当用户按下返回键关闭发送对话框时如何捕捉回调?

谢谢!

【问题讨论】:

  • MessageDialog 仅适用于 Messenger 的原生应用程序?

标签: android facebook messenger


【解决方案1】:

我相信这与用于在提要上共享的 ShareDialog 发生的问题相同。当用户分享或取消对话时,我收到 onSuccess 的回调,并且 postId 始终为空!所以我无法区分这两个结果。

经过一番研究,我发现了这个bug report。 Facebook 团队回复如下:

经过更多研究,事实证明这种行为是设计使然。 SDK 为 MessageDialog 等对话框重用 FacebookCallback 类,但它使用 onSuccess() 方法发出任何关闭对话框的信号。这意味着 onSuccess() 将在实际发送消息时被调用,而且在对话框被关闭但未发送消息时也会被调用。

在我的情况下,这是解决方案:用户必须在登录过程中授予publish_actions 权限才能触发 onSuccess 和 onCancel 。当帖子成功发布到 Facebook 时,也会返回 postId。

我希望这可以为您解决问题。

【讨论】:

  • 感谢您的建议。目前,ShareDialog 在 facebook android sdk 4.3 版上完美运行。只有 MessageDialog 有这个错误。 :(
  • @NamLe 是的,我尝试授予我的应用权限,但 MessageDialog 仅触发 onSuccess 作为回调。这仅适用于 ShareDialog。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多