通过Facebook登录

时间:2012-03-18 19:41:16

标签: facebook facebook-javascript-sdk

我已经实现了一个通过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中的登录按钮是可见的,在其他浏览器中很多时候都没有。

2 个答案:

答案 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中得到了很好的处理。