检查用户是否使用FB.ui在共享对话框中向Facebook发布(或取消)共享
Check if user posted (or cancelled) sharing to Facebook in Share Dialog using FB.ui
我使用的是一个共享对话框,我希望在用户向他/她的时间线发布内容后发生一些事情。现在我使用的是:
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_code
和error_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
- Ajax发布表单序列化,发布引号'
- Ajax Live搜索发布到Laravel视图
- Sails.js:同时发布文本输入和一个文件
- Facebook共享显示一个接一个的空白页面
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 通过javascript/html访问twitter共享iframe
- 如何在Jquery中发布后将值从视图返回到控制器
- 使用$.ajax发布多个复选框
- 在我的SPA应用程序中集成Facebook共享的问题
- 将地理编码结果转换为php变量以发布到mysql数据库
- 在索引.html和应用.js [node.js] 之间共享变量
- AngularJS:$q.dedefe()不能由工厂方法共享
- django模板没有在AJAX发布后重新加载
- 使用闭包共享构造函数参数
- 如何让 React Native 在编译发布时将 JS 包放入共享扩展中
- Angularjs 跨源资源共享 (CORS) 发布或放置方法在 IE8 和 IE9 中不起作用
- 是否可以进行FB共享对话框,并在用户共享后,向用户发布消息
- 获取表格行的内容,并使用Jquery使用共享按钮在Facebook上发布
- 发布绑定/监视两个控制器之间共享的服务变量
- 检查用户是否使用FB.ui在共享对话框中向Facebook发布(或取消)共享