2011-03-14 61 views
4

我有以下問題:Fb.api未定義用戶

一旦用戶登錄了Facebook,如果我運行下面的代碼:

FB.api('/me', function(user) { 
     alert(user.name); 
}); 

它彈出一個警告以「Udefined」寫的。

但如果我更改代碼以下列方式:以正確的方式

FB.api(/[MY_REAL_FACEBOOK_ID], function(user) { 
     alert(user.name); 
}); 

它的響應。

怎麼可能? 爲什麼'/我'從不工作?

+0

這是直出的[API例子(http://developers.facebook.com /docs/reference/javascript/FB.api/): - /你可以調試器 - 在那一行上打破或轉儲出你回來的對象? – Rup 2011-03-14 13:43:33

+0

謝謝asnwer ...我在Facebook API中完全是新手,我甚至不知道如何調試錯誤。我懷疑這個錯誤是在FB.init中,但我按照facebook文檔中的解釋設置它:FB.init({appId:[MY_APP_ID],status:true,cookie:true,xfbml:true}); – Joe 2011-03-14 13:53:21

回答

1

我想你可能會在應用程序的上下文中而不是用戶中查詢「/ me」。文檔不盡如人意,但我遇到了同樣的問題。

您能否使用FB.getLoginStatus

在我設置了FB.init後,我調用了FB.getLoginStatus,類似於下面的內容。如何做到這一點可能會有更好的方式,但它適用於我。

希望這有助於:

FB.getLoginStatus(function (response) { 

      if (response.session) { 
       // logged in and connected user, someone you know 

       graphUrl = "https://graph.facebook.com/me?access_token=" +   response.session.access_token + "&callback=displayUser" 
       var script = document.createElement("script"); 
       script.src = graphUrl; 
       document.body.appendChild(script); 


      } else { 
       // no user session available, someone you dont know 

      }}); 


function displayUser(user) { 

     alert(user.name); 
    } 
+0

它仍然沒有工作。爲什麼需要access_token?文檔沒有提到這一點。它只是告訴FB.init,標籤FB.login-button和FB.api需要用戶的信息。訪問令牌也是必需的嗎? – Joe 2011-03-14 14:27:33

+1

什麼不起作用?你是否收到填充的響應和會話值?據我的理解,access_token給出允許您使用的應用程序代表用戶進行允許的調用。 – 2011-03-14 14:41:18

1

使用下面的代碼來克服不確定問題:

window.fbAsyncInit = function() { 
    // init the FB JS SDK 
    FB.init({ 
     appId  : your_app_id,       
     status  : true,         
     xfbml  : true         
    }); 

    // Additional initialization code such as adding Event Listeners goes here 

    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      alert("connected"); 
      connecter=true; 
      FB.api('/me', function(user) { 
       alert(user.name); 
       alert(user.first_name); 
       alert(user.last_name); 
       alert(user.email); 
      }); 
     } 
    }); 
+0

謝謝:那麼這裏的修復是什麼?你正在測試'response.status ==='connected''而不是測試'response.session'是否被定義爲在另一個答案中?這樣更好嗎? – Rup 2013-06-07 09:18:06

+0

我得到的用戶名,但未定義的休息... – Josh 2017-10-11 07:57:47