簡體   English   中英

Facebook JavaScript SDK登錄

[英]Facebook JavaScript SDK Login

這是我的代碼。 它在Facebook的JavaScript SDK測試控制台上運行完美,但不在此處: http//www.booktrolley.in/beta/fblogin.php

<html xmlns:fb="http://www.facebook.com/2008/fbml"> 
<head></head> 
<body> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
FB.init({
  appId  : '270423476307006',
 status : true, // check login status
 cookie : true, // enable cookies to allow the server to access the session
 xfbml  : true, // parse XFBML
channelUrl : 'http://pedurology.org/booktrolley/beta/channel.html', // channel.html file
oauth  : true // enable OAuth 2.0
});
</script> 

<h1>Login, Logout, Name and Profile Picture</h1> 
<div id="account-info"></div> 

<script> 
/**
 * This assumes the user is logged in and renders their profile picture,
 * name and a logout link.
*/
  function showAccountInfo() {
  FB.api(
 {
   method: 'fql.query',
  query: 'SELECT name,uid,pic_square FROM user WHERE uid='+FB.getSession().uid
 },
 function(response) {
 alert(FB.getSession().uid);
  Log.info('API Callback', response);
  document.getElementById('account-info').innerHTML = (

    '<img src="' + response[0].pic_square + '"> ' +
    response[0].name +
    ' <img onclick="FB.logout()" style="cursor: pointer;"' +
        'src="https://s-static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif">'
   );
  }
  );
}

/**
 * This assumes the user is logged out, and renders a login button.
 */
 function showLoginButton() {
   document.getElementById('account-info').innerHTML = (
 '<img onclick="FB.login()" style="cursor: pointer;"' +
     'src="https://s-static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif">'
  );
}

/**
* This will be called once on page load, and every time the status changes.
*/
function onStatus(response) {
Log.info('onStatus', response);
if (response.session) {
 showAccountInfo();
  } else {
  showLoginButton();
 }
 }
 FB.getLoginStatus(function(response) {
  onStatus(response); // once on page load
 FB.Event.subscribe('auth.statusChange', onStatus); // every status change
 });
 </script> 
  </body> 
 </html> 

我在以下代碼中收到“Log is undefined”錯誤:

function onStatus(response) {
Log.info('onStatus', response);
if (response.session) {
 showAccountInfo();
  } else {
  showLoginButton();
 }
 }
 FB.getLoginStatus(function(response) {
  onStatus(response); // once on page load
 FB.Event.subscribe('auth.statusChange', onStatus); // every status change
 });

你試圖利用FB頁面上存在的記錄器,但不是你自己的?

試試這段代碼:

<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head></head>
<body>

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
    FB.init({
        appId: '270423476307006',
        status: true,
        cookie: true,
        xfbml: true,
        oauth: true
    });

    FB.getLoginStatus(function(response) {
        onStatus(response); // once on page load
        FB.Event.subscribe('auth.statusChange', onStatus); // every status change
    });
};
(function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());
</script>

<h1>Login, Logout, Name and Profile Picture</h1>
<div id="account-info"></div>

<script>
/**
 * This assumes the user is logged in and renders their profile picture,
 * name and a logout link.
 */
function showAccountInfo(resp) {
    if( !resp.userID ) {
        // we shouldn't be here
        return;
    }
    FB.api(
    {
      method: 'fql.query',
      query: 'SELECT name,uid,pic_square FROM user WHERE uid='+resp.userID
    },
    function(response) {
      document.getElementById('account-info').innerHTML = (

        '<img src="' + response[0].pic_square + '"> ' +
        response[0].name +
        ' <img onclick="FB.logout()" style="cursor: pointer;"' +
            'src="https://s-static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif">'
      );
    }
    );
}

/**
 * This assumes the user is logged out, and renders a login button.
 */
function showLoginButton() {
  document.getElementById('account-info').innerHTML = (
    '<img onclick="FB.login()" style="cursor: pointer;"' +
         'src="https://s-static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif">'
  );
}

/**
 * This will be called once on page load, and every time the status changes.
 */
function onStatus(response) {
  if (response.authResponse) {
    showAccountInfo(response.authResponse);
  } else {
    showLoginButton();
  }
}
</script>
</body>

現在讓我們來解釋一下我們做了什么:

  1. 我們正在使用異步加載來確保只有在成功加載庫時才會觸發FB.getLoginStatus()
  2. 由於您將oauth設置為true,因此您需要更改代碼以使用新響應(請參閱此帖子 )(您可能需要更改應用程序設置)
  3. 基於#2,可以使用response.authResponse.userID訪問showAccountInfo()使用的當前用戶ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM