如何使用开放图形API显示Facebook登录按钮,并在成功登录后获取用户名和电子邮件?我试过这个但没有成功。
我在头部有这个:
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script type="text/javascript">
FB.init({
appId: '12345', cookie: true,
status: true, xfbml: true
});
FB.api('/me', function (user) {
if (user != null) {
alert(user.name);
}
});
</script>
我将<div id="fb-root"></div>
放在</body>
标记之前的最后。到现在为止还挺好。我的<fb:comments> and <fb:comments-count>
可以在我网站的任何页面上正常工作。但我无法让我的登录工作(它说我没有定义fb-root)
我在页面中间的某个地方有这个:
<fb:login-button perms="email,user_checkins">Login with Facebook</fb:login-button>
在登录窗口提交后,我收到一个js错误,指出未定义fb-root div。但我确实在页面的末尾有它。
答案 0 :(得分:0)
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: '12345',
cookie: true,
status: true,
xfbml: true
});
FB.api('/me', function(user) {
if (user != null) {
alert(user.name);
}
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
答案 1 :(得分:0)
将初始化包装在最后调用的函数中,即:
<html>
<head>
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script type="text/javascript">
function fbInit() {
FB.init({
appId: '12345', cookie: true,
status: true, xfbml: true
});
}
if(FB.getSession() != null) {
// user logged in, continue with the program.
};
</script>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
fbInit();
</script>
</body>
</html>
或者更好,在$(document).ready()
(使用jQuery)