1

我正在尝试使用我的 iPhone 上的 Facebook JS API 登录我的网站。登录在计算机和 iPad 上都可以正常工作。

这是登录屏幕:

然而,在 iPhone 上,我看到一个如下所示的屏幕:

当我关闭 Facebook 屏幕并显示“返回上一页”消息并重新加载登录页面时,我已成功登录。看起来问题是,iPhone 无法关闭登录弹出屏幕。

这是我的 JavaScript 代码:

  <div id="fb-root"></div>
  <script type="text/javascript">
    window.fbAsyncInit = function() {
      FB.init({
        appId      : '', // the app id
        status     : true,
        cookie     : true,
        xfbml      : true
      });
      FB.getLoginStatus(function(response) {
        if (response.status == "connected") {
          // do something
        }
      });

      FB.Event.subscribe("auth.login", function(response) {
        if (response.status == "connected") {
          // do something
        }
      });
    };

    function facebookRedirectLogin(redirect) {
      // do something
    }

    function logout() {
      FB.logout(function(response) {
        // do something
      });
    }
    (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));
  </script>
  <div class="fb-login-button" style="margin-bottom: 20px;">Forbind med Facebook</div>

我该如何解决这个问题?

4

2 回答 2

2

签出此网址

请按照上述 URL 中的说明进行设置,此代码可在移动设备中使用。

<html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>
  <div id="fb-root"></div>
    <div id="login">
        <p><button onClick="loginUser();">Login</button></p>
    </div>
    <div id="logout">
        <p><button  onClick="FB.logout();">Logout</button></p>
    </div>

    <script>
        function loginUser() {    
            FB.login(function(response) { }, {scope:'email'});     
        }
    </script>
  <script>
      (function() {
        var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
            }());
    </script>
    <script>
      window.fbAsyncInit = function() {
        FB.init({ appId: 'xxxxxxxxxxxx', 
          status: true, 
          cookie: true,
          xfbml: true,
          oauth: true});

          FB.Event.subscribe('auth.authResponseChange', handleResponseChange);  
        };
    </script>
    <script>
        function handleReponseChange(response) {
            document.body.className = response.authResponse ? 'connected' : 'not_connected';

            if (response.authResponse) {
                alert(response);
            }
        }
    </script>

</body>

于 2012-09-25T10:36:17.533 回答
1

我有完全一样的问题。这可能(也可能不是)是一个开放的 Facebook 错误:https ://developers.facebook.com/bugs/280811108698311

于 2012-09-24T12:40:53.043 回答