0

我试图让用户登录到 facebook,然后在警报中显示他们的用户 ID。

然而,这段代码没有返回任何东西。我究竟做错了什么?

<html>                                                                                                                                                                      
   <head>                                                                                                                                                                    
     <title>Login to Facebook</title>                                                                                                                                                  
   </head>                                                                                                                                                                   
  <body>
      <div id="fb-root"></div>
      <script>
        window.fbAsyncInit = function() {
          FB.init({
            appId      : 'APP ID',
            channelUrl : 'http://www.mydomain.net/zoozTest/channel.html',
            status     : true, 
            cookie     : true,
            xfbml      : true,
            oauth      : true,
          });
        };
        (function(d){
           var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
           js = d.createElement('script'); js.id = id; js.async = true;
           js.src = "//connect.facebook.net/en_US/all.js";
           d.getElementsByTagName('head')[0].appendChild(js);
         }(document));

       //LOGIN FUNCTION 
       function login() {
        FB.login(function(response) {
            if (response.authResponse) {
                alert('Success!');
            }else{
                alert('Login Failed!');
            }
        }, {scope: 'email'});
     }
      </script>
      <div onclick="login();">Login with Facebook</div>
    </body>                                                                                                                                                                  
 </html>
4

1 回答 1

1

你的代码,逐字复制,对我来说很好。三件事:

1:愚蠢的问题,但是您已经将“APP ID”替换为您的实际应用程序ID,对吗?否则会报错

2:检查您的应用程序设置。您是否正确指定了您的应用程序域和“带有 facebook 登录的网站”URL?

3:从技术上讲,你有一个竞争条件。如果您单击“使用 Facebook 登录”div 并尝试在 FB JS SDK 初始化(它异步加载)之前运行您的 login() 函数,您将收到一个错误,因为不会定义全局 FB 对象。我会在 window.fbasyncinit 函数的底部添加一个 console.log 以确保正在定义 FB(对于测试,对于生产,您可能希望在 Facebook 启动之前阻止登录显示,或者构建一些一种队列,在尝试使用之前检查全局 FB 对象是否已定义,如果没有则添加到队列中)。

您在 javascript 控制台中是否有任何错误?

于 2013-01-03T09:59:45.157 回答