2014-10-20 124 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