2012-03-18 242 views
0

我已经实现了一个网站,实现了Facebook登录。 我已经在浏览器的Safari浏览器上测试过它,并且一切似乎都没有问题。我刚刚在Chrome和Mozilla上测试过它,但它不起作用。我将粘贴代码,但您可以在http://taxigruppo.altervista.org/flogin.php上找到示例。通过Facebook登录

非常感谢。

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

您没有正确地将各种值传递给Facebook。错误URL的第一部分是:

https://www.facebook.com/dialog/oauth?api_key=APP_ID&app_id=APP_ID&client_id=APP_ID

这是最有可能不是你想要的。我真的不知道它出错的地方,但要确保你正确地传递了所有的值。

+0

问题不在于登录过程,而在于登录按钮。如果它是可见的,它就会起作用......问题在于,很多时候它不是可见的,并且是可控的。 – AleVale94 2012-03-18 19:59:02

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中处理得非常好。