2012-08-05 70 views
0

我正在按如下所示進行Facebook登錄。但事件不會觸發(FB.Event.subscribe(..),GetFBLoginStatus())。我在本地主機上運行它,並在我的應用程序中指定它,但爲此目的沒有必要。它看起來像JavaScript沒有加載,但facebookbutton呈現。我必須改變什麼?彈出窗口要求權限,當我點擊「登錄」,但沒有更多。Loading Facebook javascript

 <html> 
<head> 
    <title>My Facebook Login Page</title> 
</head> 
<body> 

    <div id="fb-root"></div> 
    <script type ="text/javascript"> 
     window.fbAsyncInit = function() { 
      FB.init({ 
       appId: 'some id', // App ID 
       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.login', function (response) { alert('You logged in'); }); 
     }; 
     // 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)); 

     function GetFBLoginStatus() { 
      FB.getLoginStatus(function (response) { 
       console.log(response); 
       if (response.status === 'connected') { 
        var accessToken = response.authResponse.accessToken; 
        alert(accessToken); 
       } else if (response.status === 'not_authorized') { 
        //login function 
        alert('login first'); 
       } else { 
        //login function 
        alert('login first'); 
       } 
      }, true); 
     } 
    </script> 
    <div class="fb-login-button" scope="email,user_checkins,read_mailbox">Login with Facebook</div> 
     //this function is not work -> javascript not loaded? 
    <button onclick = "GetFBLoginStatus();">GetStatus</button> 
</body> 

回答

1

也許問題是本地主機不接受coockies。這發生了很多。必須啓用cookie,因爲這是FB JS SDK將用戶登錄信息傳遞到頁面的方式。我通常編輯我的系統/主機通過www.localhost.com訪問本地主機。由於瀏覽器不檢測本地主機並寫入所有必要的cookie。

而且,最好是定義裏面window.fbAsyncInitGetFBLoginStatus()功能,因爲它可以在FB.init之前被調用,會崩潰,因爲FB對象(你的函數內部使用:FB.getLoginStatus)尚未建立。

我聽到有人說,有時auth.login事件不會觸發當用戶已經授權您的應用程序。這是因爲這個事件只在狀態CHANGES連接時觸發。如果用戶過去已經授權,則沒有任何改變。還有其他事件,如auth.authResponseChangeauth.statusChange。也許他們更好地滿足您的需求。

+0

感謝您的有用評論,Victor.Also我建議開發人員這個http://facebookhelper.codeplex.com/ – 2012-08-06 10:05:07

+0

在mvc中使用此包添加參考webmatrix.data && webmatrix.webdata並在屬性中設置鎖定'真正' – 2012-08-06 14:15:14