我已经实现了一个通过Facebook实现登录的网站。 我已经在浏览器Safari上测试了它,一切似乎都没问题。我刚刚在Chrome和Mozilla上测试过它,但它不起作用。我会粘贴代码,但您可以在http://taxigruppo.altervista.org/flogin.php上找到示例。
非常感谢。
window.fbAsyncInit = function() {
FB.init({
appId : "<?= YOUR_APP_ID ?>",
status : true,
cookie : true,
xfbml : true,
oauth : true
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
}
<div id="fb-root"></div>
<fb:login-button scope="<?= $permissions ?>">Login</fb:login-button>
如果您需要其他代码,例如PHP,请告诉我。
问题是Safari中的登录按钮是可见的,在其他浏览器中很多时候都没有。
答案 0 :(得分:0)
您没有正确地将各种值传递给Facebook。错误URL的第一部分是:
https://www.facebook.com/dialog/oauth?api_key=APP_ID&app_id=APP_ID&client_id=APP_ID
这很可能不是你想要的。我无法确切地看到它出错的地方,但要确保你正确地传递了所有的值。
答案 1 :(得分:0)
一种替代方法是自己创建登录按钮并设置样式以使其具有facebook登录的外观和感觉。确保你服从他们的policy并损害他们的品牌价值(例如,创建反映Facebook品牌的按钮,而不是你的品牌。)
<span class="facebook-button">
</span>
然后,如果您使用的是jquery(这在facebook js-sdk中非常有用),您可以使用按钮bind click事件。
$(".facebook-button").click(function{
YOUR FUNCTION
});
否则,您也可以使用onclick功能。在YOUR FUNCTION
中,调用FB.api()
或类似的api函数(也可以是登录函数)。一个很好的例子是他们的文档中的here。
优点: 1.非常强大,你可以通过这种方法在服务器端或客户端做各种事情。 2.会更快。你可以把你的jquery花哨的东西放在一个js文件(或一个聚合文件)中,浏览器加载会更快。
注意:有时您可以在控制台中看到FB not defined
错误,这在question中得到了很好的处理。