1

iPhone から Facebook JS API を使用して Web サイトにログインしようとしています。ログインは、コンピューターだけでなく 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を確認してください。

上記の 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 に答える