2012-03-18 240 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中處理得非常好。