FB.login没有在Facebook Mobile Web Application中解雇

时间:2012-08-24 14:48:52

标签: facebook facebook-javascript-sdk

我无法接受权限对话以及登录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登录上工作

2 个答案:

答案 0 :(得分:0)

我今天花了一段时间才明白window.fbAsyncInit方法在某些移动浏览器上没有被触发(事实上在我公司的所有移动设备上)。你需要做的是添加这样的东西:

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

    // here the fb code
}

if (!called) window.fbAsyncInit();

答案 1 :(得分:0)

这也发生在我身上。 FB.login函数嵌套在回调中。在我的情况下,浏览器阻止了Facebook的弹出页面。当我解锁弹出窗口时,它很好。