2011-05-12 211 views
2

當客戶端允許我的應用程序在他的Facebook帳戶上時,我收到訪問令牌。基於該訪問令牌和URL,我可以打印他的所有朋友。我有一個問題:這個訪問令牌是否在用戶登錄他的應用程序時出現?我問這是因爲第二次用戶登錄我的應用程序,我有一個Web瀏覽器的朋友列表不會彈出,因爲該網站的響應不包含訪問令牌了。我在哪裏錯了?我如何檢查用戶接受我的應用程序後,他是在網上還是在 - 如果我想打印他的朋友。c#Facebook訪問令牌

+0

您必須向zuckerberg發送一些錢才能獲得Facebook的後門API。那麼你不需要任何訪問令牌。 :) – ibram 2011-05-12 07:46:28

+0

你能告訴我我應該多少次收到令牌存取權嗎? – linuxx 2011-05-12 07:55:42

+0

或者你能回答我的問題嗎?:) – linuxx 2011-05-12 07:55:55

回答

0

第一件事:聽起來您要添加的範圍offline_access,因爲你正在試圖做的是真正撬動FB認證機制。

另外:這是可能比較容易使用FB連接按鈕和JavaScript客戶端API,除非你打算使用來自後端服務器的圖形或REST API。

如果ARE打算使用後端API集成看過這一段: 我發現它有助於確保您使用的是正確的身份驗證URL(我用www.facebook.com/dialog/oauth但其他人在過去工作..)。只是不要使用僅授權URL,否則用戶將被強制重複授予權限(從未真正理解該「功能」)。接下來使用請求令牌將用戶重定向到URL,並將請求保密在服務器端(或者在客戶端進行加密)。登錄後,您將收到帶有OAuth驗證程序的回調。使用Verifier訪問驗證URL graph.facebook.com/oauth/access_token,您將收到OAuth訪問令牌。保存該令牌以及用戶標識。

至於檢查當前用戶登錄和/或授權您的應用程序和/或有使用你的應用程序的朋友:

看一看FB連接API: http://developers.facebook.com/docs/guides/web/#login

通話FB.init第一,然後當你打電話FB.getLoginStatus,你會如果當前用戶登錄到FB和以前授權您的應用程序獲取OAuth令牌(通過連接按鈕或OAuth的流量):

$wnd.FB.getLoginStatus(function(response) { 
    if (response.session) 
    var authToken = encodeURIComponent(response.session.access_token); 
}); 

當結合提到的身份驗證流程,那些已經授權的應用程序將獲得相同的OAuth訪問令牌從以前的調用返回,你可以用JS客戶端,使用圖形,或REST API的用戶執行。