2017-02-16 53 views
0

這聽起來像一個愚蠢的問題,但我不明白令牌的工作方式。用應用程序訪問令牌調用facebook api並從用戶頁面檢索提要

上下文:我有一個web應用程序,用戶可以按下一個按鈕,然後用他們的facebook憑據登錄,給我'manage_pages'權限。 webapp的想法是在服務器上每5分鐘運行一個cron,它將檢索用戶的帖子並將它們顯示在webapp中。

步驟:

  1. 用戶點擊該按鈕,登錄到Facebook的(這樣我就可以有一個訪問令牌,讓我們稱之爲用戶訪問令牌)。
  2. Webapp發出請求'/ me/accounts'(使用用戶訪問令牌),這樣我就可以獲得其中一個用戶頁面的頁面ID。
  3. 向我的內部API發送Web應用程序請求,並在DB中存儲用戶的PageID。

現在,我已經提到了每5分鐘提出一個請求'{page_id}/feed'來獲取此頁面的帖子,然後在我的webapp中顯示它們。要做到這一點,我使用PHP SDK的PHP和我做的:

  • 用我的應用程序ID和我的祕密登錄。
  • 我得到一個訪問令牌(姑且稱之爲我的應用程序內的訪問令牌
  • 我的要求去做「{PAGE_ID} /飼料」,發送我的應用程序內的訪問令牌失敗

    • 那麼,爲什麼它失敗?我知道這是與訪問令牌有關,因爲如果我使用用戶訪問令牌我可以在服務器中請求罰款,但如果我使用my-app-access-token,我可以不。
    • 爲什麼我不能使用my-app-access-token如果用戶授予我manage_pages權限?
    • 我想到的替代方案是,在步驟上,我也可以存儲用戶訪問令牌。但如果我這樣做,我認爲這個令牌會在一段時間後過期,對吧?

回答

0

我的要求去做「{PAGE_ID} /飼料」,送我的應用程序內的訪問令牌,但未能

如果頁面是不公開或訪問任何限制那麼您不能使用應用程序訪問令牌,但需要爲可以看到該頁面的用戶或頁面訪問令牌使用用戶訪問令牌。

[...]但如果我這樣做,我認爲令牌會在一段時間後過期,對嗎?

擴展頁面訪問令牌沒有默認期滿。 (如果頁面管理員用戶,其令牌用於請求的頁面標記改變了他們的帳戶密碼他們可能到期但由於其他原因,例如。)

https://developers.facebook.com/docs/facebook-login/access-tokens

+0

感謝。我一直在讀一點。據我瞭解,**長壽命**頁面標記不會過期。所以,我應該尋找替代方案:當我將頁面ID發送到我的分貝時,我可以存儲該標記(實際上,因爲它將是一個短暫的標記,所以我可以使用我的應用標識+我的祕密+用戶頁面的頁面標記,並生成一個**長期**標記並存儲那個沒有到期時間的標記 –

+0

您需要首先擴展短期用戶標記,然後請求具有擴展用戶令牌的頁面令牌。 – CBroe

相關問題