检查用户是否使用FB.ui在共享对话框中向Facebook发布(或取消)共享

Check if user posted (or cancelled) sharing to Facebook in Share Dialog using FB.ui

本文关键字:共享 发布 Facebook 取消 对话框 是否 FB ui 检查 用户      更新时间:2023-09-26

我使用的是一个共享对话框,我希望在用户向他/她的时间线发布内容后发生一些事情。现在我使用的是:

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"出现,即使用户取消了发布。如果用户在不需要任何权限的情况下将消息发布到了他/她的时间线上,我有什么办法可以找到吗。如果这需要我使用不同的共享方法(比如提要对话框),我不会介意。

请改用Feed对话框。

尽管用户界面很难看,但无论用户是否验证你的Facebook应用程序,通过Feed Dialog成功共享都会返回一个类似{post_id: "10206702999763274_10206703017843726"}的响应对象,而按下cancel将返回一个null,关闭弹出窗口将返回undefined

您可以通过转到正常的Facebook用户配置文件设置来测试这种行为,并尝试将您的应用程序从允许列表中删除。

这与共享对话框形成对比,如果您的应用程序尚未通过用户身份验证,则无论共享是否成功,共享对话框都将返回一个空响应对象{}

此外,如果您使用直接url重定向方法而不是js SDK,当用户在共享页面上按cancel时,您将收到附加到重定向目标的GET参数error_codeerror_message

【自2015年12月起】=>使用Feed对话框或Share对话框访问响应中的帖子ID。要实现这一点,用户必须登录到您的应用程序并授予其publish_actions权限。https://developers.facebook.com/docs/sharing/reference/share-dialog#response


注意:在撰写本文(API v2.3)时,这是真的。然而,由于Facebook因破坏API行为而臭名昭著,你应该首先自己测试它

根据文档,响应是已发布条目的object_id,只有在用户授权应用程序的情况下才会填写。也就是说,如果用户未经授权,则无法检测用户是否真的发布了内容。

来源:https://developers.facebook.com/docs/sharing/reference/share-dialog