2011-09-15 103 views
7

我們使用Facebook的Javascript SDK來驗證我們的用戶。如何從Facebook簽名的請求中獲取訪問令牌?

一旦用戶進行身份驗證,用戶就會獲得一個包含簽名請求的cookie,其中包含app_id >。

然後我們使用AJAX將一些信息發佈到我們的服務器。服務器接收的cookie與簽名的請求,但是當服務器解析cookie中的簽名的請求(修改蟒蛇SDK),它作爲JSON對象進行解碼:

 
{ 
    "algorithm": "HMAC-SHA256", 
    "code": "2.AQDBJ3-ZpURb9P4T.3600.1316037600.1-786359552|BNK6FGOAkvMs7slboQMSIEJYDWc", 
    "issued_at": 1316031333, 
    "user_id": "786359552" 
} 

這違背了什麼signed request documentation說,我們應得。

服務器需要訪問令牌,因此它可以通過GraphAPI獲得一些附加信息。

我們如何從已簽名的請求中獲取訪問令牌?

+3

答案就在這裏: [http://facebook.stackoverflow.com/questions/7201521/problem-getting-access-token-after-migrating-to -oauth-2-0] [1] [1]:http://facebook.stackoverflow.com/questions/7201521/problem-getting-access-token-after-migrating-to-oauth- 2-0 – sbaechler

+0

謝謝,那個鏈接解決了我的問題。 – Eric

回答

2

使用新的oauth2工作流程與javascript sdk用戶令牌將可用。

後您進行身份驗證,你可以找到的東西令牌這樣

FB.getLoginStatus(function(response) { 

       if (response.status === 'connected') { 

       alert(response.authResponse.accessToken); 

       } 
     }); 

一旦你有你可以傳遞迴後端令牌查詢圖表。

+0

作品完美無瑕地爲什麼OP是睡着了! – BlackDivine

+0

因爲這個答案沒有解決問題。答案在我的問題的評論中提供。 – Eric

+0

我有與不可靠的cookie設置相同的問題。這個解決方案爲我工作。 – Houman

1

正確的是:

FB.getLoginStatus(function(response) { 

      if (response.status === 'connected') { 

      alert(response.session.access_token); 

      } 
    }); 
相關問題