2011-12-17 69 views
0

我有一个我用来从Facebook相册导入图片的脚本。它昨天工作,但今天它不再工作。具有登录权限的弹出窗口不再打开。而脚本不会将Facebook登录留在FB.init中。facebook API中对FB.init和FB.login的最近更改?

<script src="http://connect.facebook.net/en_US/all.js"></script> 

var loggedIn = false; 



/*Logs the user into Facebook*/ 

function loginFacebook() { 

    //initializes the facebook API 

    FB.init({appId : "xxxxxxx", status : true,cookie : true,xbfml : true}); 



    document.getElementById("status").innerHTML = "In attesa del permesso Facebook"; 

    //opens the Facebook login window for user 

    FB.login(function(response) { 

     if (response.session) { 

      document.getElementById("status").innerHTML = "Logged In. Ora puoi caricare gli album."; 

      loggedIn = true; 

      //disables the login button after the user has loggedIn 

      document.getElementById("loginBtn").disabled = "Disabilitato"; 

      document.getElementById("loginBtn").style.display = "None"; 

      document.getElementById("albumBtn").style.display = "inline"; 

      document.getElementById("fb_logo").style.display = "None"; 

      document.getElementById("label_fb").style.display = "None"; 





     } else { 

      document.getElementById("status").innerHTML = "Non hai effettuato il Facebook Login"; 

      loggedIn = false; 

     } 

    },{perms:'user_photos'}); 

} 

回答

1

1)我们建议使用异步加载,如documentation提到:

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'YOUR_APP_ID', // App ID 
     channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    // Additional initialization code here 
    }; 

    // Load the SDK Asynchronously 
    (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> 

2)如本博客post提到你必须升级到的OAuth 2.0。
3)你有一个错字xbfml应该xfbml
4),你应该使用scope代替perms
5)这里是你的代码的重写(把SDK <body>标签):

<head> 
<!-- head content here --> 

<!-- Include the normal stylesheet--> 
<link href="style.css" rel="stylesheet" /> 
</head> 
<body> 
    <div id="fb-root"></div> 
    <script> 
     var loggedIn = false; 
     var isLoaded = false; 
     function loginFacebook() { 
      if(!isLoaded) { 
       alert("SDK is not yet loaded or something went wrong!"); 
       return false; 
      } 
      //initializes the facebook API 
      document.getElementById("status").innerHTML = "In attesa del permesso Facebook"; 
      //opens the Facebook login window for user 
      FB.login(function(response) { 
       if (response.authResponse) {  
        document.getElementById("status").innerHTML = "Logged In. Ora puoi caricare gli album."; 
        loggedIn = true; 
        //disables the login button after the user has loggedIn 
        document.getElementById("loginBtn").disabled = "Disabilitato"; 
        document.getElementById("loginBtn").style.display = "None"; 
        document.getElementById("albumBtn").style.display = "inline"; 
        document.getElementById("fb_logo").style.display = "None"; 
        document.getElementById("label_fb").style.display = "None"; 


       } else { 
        document.getElementById("status").innerHTML = "Non hai effettuato il Facebook Login"; 
        loggedIn = false; 
       } 
      },{scope:'user_photos'}); 
     } 
     window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : 'YOUR_APP_ID', // App ID 
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
     }); 
     // Additional initialization code here 
     isLoaded = true; 
     }; 

     // Load the SDK Asynchronously 
     (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> 
<!-- rest of markup here --> 
+0

欢迎您。请尝试[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)答案:至于其他问题,尽力解决你的问题,然后问你一个关于你的代码和问题的新问题。 – ifaour 2011-12-17 19:12:36

+0

好的,谢谢你现在正在加载专辑名称,但不是下一个文件加载的图片。很长时间我给你链接,也许你可以检查是否有其他代码不允许新的API。谢谢! ! :) [链接] http://goo.gl/HY59u – user1103633 2011-12-17 19:12:59

0

FB文件说,你需要使用的,而不是response.session response.authResponse。更多信息here

+0

我tetsed以及与response.authResponse但没有达到预期效果,这里的脚本:\t \t的FB.login(功能(响应){ \t \t \t如果(response.authResponse){\t \t \t \t \t的document.getElementById( “状态”)。innerHTML的=“登录。奥拉puoi caricare GLI专辑“。 \t \t \t \t的loggedIn = TRUE; – user1103633 2011-12-17 16:31:22

+0

首先是确保您清除了缓存和脚本更新(如果它的缓存),那么你可以使用浏览器调试程序来确定在何处在脚本中调用线程停止,并有什么问题 – 2011-12-17 16:45:52

相关问题