0

アクセス許可ダイアログを取得できず、Facebook にログインできません。コードは次のとおりです。

<!DOCTYPE html> 
<html> 
<head> 
    <title>My Page</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.js"></script>

</head> 
<body> 


<div data-role="page">
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'APP_ID', // App ID
      channelUrl : 'http://connect.facebook.net/en_US/all.js', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });
    FB.Event.subscribe('auth.statusChange', handleStatusChange);
  };

function handleStatusChange(response) {
     document.body.className = response.authResponse ? 'connected' : 'not_connected';

     if (response.authResponse) {
     //  console.log(response);
     FB.api('/me/likes/171099129606813', function(response) {
                        if ( response.data.length === 1 ) { //there should only be a single value inside "data"
                        console.log('You like it');
                        } else {
                        console.log("You don't like it");
                        }
        });

     }
     else
     {
         FB.login(function(response) {
            if (response.status == 'connected') {
                  //console.log(response); 

                    FB.api('/me/likes/171099129606813', function(response) {
                        console.log(response);
                     });

                } else {
                    alert('Not Logged In');
                  // user is not logged in
                }    

        }, {scope: 'email,user_likes'});     
     }
   }
  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>
    <div data-role="header">
        <h1>My Title</h1>
    </div><!-- /header -->

    <div data-role="content">   
        <p>Hello world</p>      
    </div><!-- /content -->

</div><!-- /page -->

</body>
</html>

まだ認証ページに移動していません。ボディのクラス名を変更していますが、fbログインでは機能していません

4

2 に答える 2

0

window.fbAsyncInitメソッドが一部のモバイルブラウザー(実際には私の会社のすべてのモバイルデバイス)で起動されないことを理解するのに、今日はしばらく時間がかかりました。あなたがする必要があるのはこのようなsthを追加することです:

var called = false;
window.fbAsyncInit = function () {
    if (called) return;
    called = true;

    // here the fb code
}

if (!called) window.fbAsyncInit();
于 2012-09-01T19:32:52.067 に答える
0

これは私にも起こりました。FB.login 関数がコールバックにネストされていました。私の場合、ブラウザは Facebook からのポップアップ ページをブロックしていました。ポップアップのブロックを解除すると、問題なく表示されました。

于 2013-06-18T18:59:09.810 に答える