2014-10-20 189 views
0

我使用一個Facebook應用程序,以我的用戶進行身份驗證,但如果用戶沒有登錄Facebook的(我與FB.getLoginStatus()檢查它)我告訴他一個按鈕來登錄。問題是彈出窗口一直被阻塞。我不知道爲什麼,因爲我在ng-click上註冊Facebook日誌。Facebook登錄彈出阻止

<button type="button" ng-click="login()">Log in via Facebook</button> 

    ... 

    $scope.login = function() { 
      FB.getLoginStatus(function(response) { 
       if (response.status === 'connected') { 
        $scope.userId = response.authResponse.userID 
        loginSuccess() 
       } else 
        FB.login(function(response) { 
         if (response.authResponse) { 
          $scope.userId = response.authResponse.userID 
          loginSuccess() 
         } else { 
          alert('You need to log in and authorize the app, otherwise you won\'t be able to take the quiz!') 
         } 
        }) 
      }) 
     } 

任何幫助?

回答

4

FB.getLoginStatus應該在頁面加載被用來檢查用戶是否被授權並刷新用戶令牌。您可以FB.init後立即使用它,並保存用戶ID,如果他在被記錄。

FB.login必須直接在用戶交互使用,你使用它異步(!)的FB.getLoginStatus回調函數,而不是直接當用戶點擊按鈕。

例子:http://www.devils-heaven.com/facebook-javascript-sdk-login/

+0

在他的防守我想的SDK的基本工作的例子之一使用片斷像一個上面顯示的最短可行的登錄代碼 - 這是不適合所提到的原因,真正的應用程序但在你的回答中 – Igy 2014-10-20 22:04:11