2011-11-17 129 views
1

我最近添加Facebook登录按钮到我的网站和整合似乎工作正常。我遇到的唯一问题是当我登出Facebook时,“登录”按钮没有显示出来。有没有其他人有这个问题?Facebook Javascript SDK:登录按钮不显示

我使用代码直出的Javascript SDK文档(https://developers.facebook.com/docs/reference/javascript)的:

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'YOUR_APP_ID', // App ID 
     channelURL : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : true // parse XFBML 
    }); 

    // Additional initialization code here 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 

而且有我的网页上这个元素:

<div class="fb-login-button" data-show-faces="true" data-width="200" data-max-rows="1">Login with Facebook</div> 

任何人都看到我在这里的任何问题?

回答

3

测试这个代码,完全修剪下来的HTML页面对我来说工作得很好。它显示登录按钮,如果你没有登录到Facebook,并显示你的网站上的朋友,如果你是。也许你的代码的其他部分是干扰?你可以尝试用下面的基本HTML吗?

<html> 
<head> 

</head> 
<body> 

<div id="fb-root"></div> 
<script> 
    var appId = 'YOUR_APP_ID'; 
    var siteRoot = 'YOUR_HOST_NAME'; 

    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : appId, 
     channelURL : '//'+siteRoot+'/channel.html', // Channel File 
     status  : true, 
     cookie  : true, 
     oauth  : true, 
     xfbml  : true 
    }); 
    }; 


    (function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 


<div class="fb-login-button" data-show-faces="true" data-width="200" data-max-rows="1">Login w/ Facebook</div> 

</body> 
</html> 

密切相关的 - 如果你想显示的东西比在用户的情况下,默认的不同被登录,您可以检查与登录状态:

FB.getLoginStatus 

或者,如果你想做一些你的用户登录后可以绑定到登录事件有:

FB.Event.subscribe('auth.login', function() { 
     console.log('Hello world!'); 
}); 
+0

我试着运行您提供的代码,并且遇到了与我的实现相同的行为。 也许这是一个应用程序设置的东西? 虽然我得到一个JS异常,但我不确定它是否有关系。我在控制台中看到这个: 未捕获异常:错误:拒绝获取属性的权限Proxy.InstallTrigger – Brandon

+0

如果您收到JavaScript错误,那肯定是个问题。不幸的是,Facebook有我曾经使用过的最不有帮助的错误消息。如果它不是代码,那么这里唯一的其他变量就是你所说的应用程序设置,也可能是你的浏览器。我听说过FF8的一些FB集成问题 - 你在用什么浏览器?除此之外,我建议玩你的应用程序设置。 –

1

它已经有一段时间,但我怀疑你看到这一点,因为你的应用程序在“沙盒”模式。检查您的设置。