我正在开发功能,通过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
也叫。 :((((当用户按后退键关闭发送对话框时,如何捕获回调?
谢谢!
答案 0 :(得分:0)
我认为这与用于在Feed上共享的ShareDialog发生的问题相同。当用户共享或取消对话时,我在onSuccess上收到回调,而postId始终为null!所以我无法区分2个结果。
经过一番研究,我发现了bug report。 Facebook团队回复了以下内容:
经过一些研究后,事实证明这种行为是设计的。 SDK重用FacebookCallback类来处理MessageDialog等对话框,但它使用onSuccess()方法来指示对话框的任何关闭。这意味着在实际发送消息时将调用onSuccess(),但也会在不发送消息的情况下解除对话框。
在我的情况下,这是解决方案:用户必须在登录过程中授予publish_actions
权限才能触发onSuccess和onCancel。当帖子成功发布到Facebook时,也会返回postId。
我希望这能为你解决问题。