2012-04-14 92 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

相关问题