我正在使用共享对话框,我希望在用户向他/她的时间轴发布内容后发生一些事情。现在我正在使用:
function shareToFB(myName, myLink) {
$('.overlay-bg').hide();
FB.ui({
method: 'share',
href: myLink,
name: myName
}, function(response) {
if (response && !response.error_code) {
alert("Something");
} else {
alert("Error");
}
}
);
}
但即使用户取消发布,这也会导致“Something”出现。如果用户已将消息发布到他/她的时间线而无需任何权限,我是否可以找到任何方式。我不介意这是否需要我使用不同的共享方法(如提要对话框)。
答案 0 :(得分:3)
根据文档,响应是发布条目的object_id
- 只有在用户授权App时才会填写。这意味着,如果用户未经授权,您无法检测用户是否真的发布了某些内容。
来源:https://developers.facebook.com/docs/sharing/reference/share-dialog
答案 1 :(得分:3)
改为使用Feed Dialog。
尽管UI难看,但是通过Feed Dialog成功共享将返回响应对象,如{post_id: "10206702999763274_10206703017843726"}
,无论用户是否验证您的Facebook应用,而按取消将返回null
并关闭弹出窗口将返回undefined
。
您可以通过转到正常的Facebook用户个人资料设置来测试此行为,并尝试从允许列表中删除您的应用。
这与Share Dialog形成对比,https://developers.facebook.com/docs/sharing/reference/share-dialog#response如果您的应用尚未经过用户身份验证,则无论是否成功共享,都会返回空的响应对象{}
。
此外,如果您使用直接网址重定向方法而不是js SDK,当用户在共享页面上按取消时,您将收到一个GET参数error_code
并且error_message
附加到您的重定向目标。
[自2015年12月起] =>使用“订阅源”对话框或“共享”对话框可以访问响应中的帖子ID。要实现此目的,用户必须已登录您的应用程序并将其授予publish_actions。 {{3}}
注意:在撰写本文时(API v2.3),这是正确的。然而,由于Facebook因破坏API行为而臭名昭着,您应该首先自己测试它。