我在网站上添加了一个类似按钮,想知道是谁点击了按钮。 这些是我的示例代码:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: '182722795115444', status: true, cookie: true,
xfbml: true});
// To find who clicked the like button
FB.Event.subscribe('edge.create', function(response){
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
alert("logged in and connected user");
} else {
// no user session available, someone you dont know
alert("no user session available");
}
});
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
<script src="http://connect.facebook.net/en_US/all.js#appId=182722795115444&xfbml=1"></script>
<fb:like href="www.blogcountry.net" send="true" width="450" show_faces="true" font=""></fb:like>
当我点击“喜欢”按钮并登录Facebook时,确实成功,但获得了“没有用户会话”警报。
所以我很困惑:
提前致谢。
@OffBySome感谢您的回答。
你的意思是我必须调用FB身份验证API,然后我才能获得用户的信息? 但是......在facebook development doc常见问题解答:
我如何知道用户何时点击了 喜欢按钮?
如果您使用的是XFBML版本 按钮,你可以订阅 'edge.create'事件通过 FB.Event.subscribe
所以,这意味着我不知道是谁点击了Like按钮,只知道点击了按钮。
如果我想获取用户的信息,我必须在点击Like之前实施登录操作? 这是非常糟糕的可用性。
任何人都可以给出好主意解决它......
答案 0 :(得分:2)
我很确定你不会只是喜欢一个页面来获得Facebook会话。您通常只有在使用您的应用程序进行身份验证时才能获得用户Facebook会话(例如,使用<fb:login-button autologoutlink="true"></fb:login-button>
)。如果在alert(JSON.stringify(response));
内部执行了什么值,你会得到什么值?
答案 1 :(得分:2)
试试这个..
FB.Event.subscribe('edge.create', function(href, widget)
{
alert('You just liked '+href);
session = FB.getSession();
uid = session['uid'];
alert(uid);
});
答案 2 :(得分:1)
今天遇到同样的问题,这个帖子为我解决了这个问题 - FB.getLoginStatus inside edge.create callback is returning unknown status and null session after logging in from the popup
FB.getLoginStatus方法有第二个参数必须设置为'true'