2012-04-14 121 views
2

我想向第三方提供使用Facebook API的服務。我們可以共享訪問令牌嗎?如果第三方爲我的服務提供了用戶的訪問令牌,那麼即使我的app_id祕密與請求它的應用不匹配,我也可以訪問該用戶的數據嗎?在各應用程序之間共享Facebook訪問令牌

我應該讓用戶在我的網站上通過單獨的oauth流程,即使他們已經爲其他第三方完成它了嗎?

謝謝。

-Ken

回答

3

關於:

是否有可能爲我們分享訪問令牌?

,並

我可以訪問用戶數據,即使我的APP_ID &祕密不請求它的應用程序相匹配?

答案是No。從規格OAuth2 section 10.3

訪問令牌憑據(以及任何機密的訪問令牌屬性)必須在運輸和儲存保密,只有授權服務器之間共享,資源服務器的訪問令牌對訪問令牌發出的客戶端有效。


我應該有用戶去通過一個單獨的OAuth流在我的網站,即使他們已經完成了它的其他第三方?

答案是Yes。如果您使用Facebook作爲授權服務器,並且您再次重新啓動oauth流程,您的用戶只需要批准您的其他應用程序(第三方)。

+5

如果你有一個應用程序和一個網站一起工作(讓我們說推特和Twitter應用程序),該怎麼辦。如果Twitter想要使用OAuth2與第三方進行身份驗證(例如Google),您是否需要分別驗證應用程序和網站?看起來非常笨拙,對用戶來說也是一種糟糕的體驗。 – Timmmm 2012-07-24 16:43:37

+0

我會將規範中的引用解釋爲「是的,這是可能的」,但是「不,你不能這樣做」,因爲這會違反安全性。如果無法共享令牌,則無需保證它們的安全。 – JRI 2018-02-15 09:34:28

2

每一個訪問令牌只發出一個應用程序 - 它無法與不同的應用程序ID使用。

8

即使該用戶訪問令牌僅針對一個應用程序發佈,也可以從任何其他應用程序輕鬆使用。

例子:

  1. 獲得訪問令牌「圖形API瀏覽器」應用程序在這裏https://developers.facebook.com/tools/explorer/?method=GET&path=me,使一個請求 - 你會看到你的數據。
  2. 複製訪問令牌並打開其他機器|瀏覽器並轉至https://graph.facebook.com/me?access_token=[access_token] - 您仍然可以檢索有關您的Facebook用戶的信息!

這裏https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/它提到

我們的數據政策明確禁止訪問令牌的任何共享與任何其他應用程序您的應用程序。但是,只要使用HTTPS進行傳輸,我們確實允許開發人員在本機實現和同一App的服務器實現之間共享Token(即使用相同的App ID)。

+0

FB數據策略的摘錄指出了它 - 顯然,您需要能夠在您的本機應用程序和後端應用程序之間共享令牌,並且您可以這樣做,因爲它們還共享對FB oauth API的獨佔憑證訪問。當然,OP並沒有真正要求這樣做。 – kingdango 2014-07-12 18:30:57

+0

@kingdango,兩個應用程序不需要「共享對FB oauth API的獨佔憑證訪問」。您可以從FB「Graph API Explorer」應用程序檢索訪問令牌,並將其用於您自己的應用程序。 – 2014-07-14 11:07:15

相關問題