1

我有这个用于登录 Facebook 的 javascript:

    window.fbAsyncInit = function() {
        FB.init({
          appId      : '{{ app_id }}', // App ID
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true // parse XFBML
        });

        FB.getLoginStatus(function(response) {
            if (response.status === 'unknown') {
                FB.login({
                    scope: 'friends_birthday,manage_pages'
                });
            }else{
                // Check permissions
                FB.api('/me/permissions',function(response) {
                    if (!('friends_birthday' in response.data[0] && 'manage_pages' in response.data[0])){
                         // Permissions not OK
                         FB.ui({
                            method: 'permissions.request',
                            perms: 'friends_birthday,manage_pages'
                            },function(response) {
                         });
                    }
                });
            }
        });

        FB.Canvas.setAutoGrow();
      };

      // Load the SDK Asynchronously
      (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/all.js";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));

没有出现任何对话框,我在all.js的第 76 行收到一个未捕获异常(显然名为“h”)的 javascript 错误。

这发生在 Chrome 而不是 Safari 上。是什么导致了这个问题?

4

1 回答 1

3

我认为这是因为您的 FB.login 功能错误,这里有一个小修复/示例:

 FB.login(function(responseAuth) {
     if (!responseAuth.authResponse) {
         console.log('Something went wrong...');
         return false;
     }
 }, { scope: 'email' });
于 2013-04-08T02:30:34.820 回答