2011-12-17 7 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)あなたはそれがxfbml
4である必要がありタイプミスxbfmlを持っている)あなたはscope代わりのperms
5)を使用する必要があり、ここであなたのコードの書き換えは、()後<body>タグをSDK を入れます:

<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

+0

おかげさまで、アルバム名はロードされていますが、次のファイルで読み込まれた写真はロードされていません。私はあなたにリンクを送ってかなり長いです、多分あなたは新しいAPIが許可されていないいくつかの他のコードがあるかどうかをチェックすることができます。 ! :) [リンク] http://goo.gl/HY59u – user1103633

0

FBのドキュメントでは、あなたの代わりにresponse.sessionのresponse.authResponseを使用する必要があると述べています。詳細情報here

+0

私はresponse.authResponseと同様tetsedが、ここで、同様のスクリプト機能していない:\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 =真;すべての – user1103633

+0

最初は(場合には、それがキャッシュされています)を使用すると、キャッシュをクリアしてきましたし、スクリプトが更新されていることを確認し、あなたがどこかを決定するために、ブラウザのデバッガを使用することができますスクリプトの中でスレッドを停止していて、何が問題なのですか? –

関連する問題