跨应用程序共享Facebook访问令牌

Ken*_*ika 1 oauth-2.0 facebook-oauth facebook-access-token

我想使用facebook api向第三方提供服务.我们可以共享访问令牌吗?如果第三方向我的服务提供用户的访问令牌,即使我的app_id&secret与请求它的应用程序不匹配,我是否可以访问该用户数据?

我是否应该让用户在我的网站上单独执行oauth流程,即使他们已经为其他第三方完成了该流程?

谢谢.

-Ken

Eug*_*lin 10

即使该用户访问令牌仅针对一个应用程序发布,也可以从任何其他应用程序轻松使用.

例:

  1. 获取"Graph API Explorer"应用程序的访问令牌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/它提到了

我们的数据政策明确禁止与任何其他应用共享您的应用的访问令牌.但是,我们允许开发人员在本机实现和同一App的服务器实现之间共享令牌(即使用相同的App ID),只要使用HTTPS进行传输即可.


Ant*_*aco 5

关于:

我们可以共享访问令牌吗?

和,

即使我的 app_id 和密钥与请求它的应用程序不匹配,我也可以访问该用户数据吗?

答案是No。来自规范OAuth2 第 10.3 节

访问令牌凭据(以及任何机密访问令牌属性)在传输和存储过程中必须保密,并且仅在授权服务器、访问令牌对其有效的资源服务器以及访问令牌颁发给的客户端之间共享。


我是否应该让用户在我的网站上执行单独的 oauth 流程,即使他们已经为其他第三方完成了该流程?

答案是Yes。如果您使用 facebook 作为授权服务器,并且再次重新启动 oauth 流程,您的用户将只需要批准您的其他应用程序(第三方)。

  • 如果您有一个可以协同工作的应用程序和一个网站(例如 Twitter 和 Twitter 应用程序)怎么办?如果 Twitter 想使用 OAuth2 与第三方(例如 Google)进行身份验证,您是否必须分别对应用程序和网站进行身份验证?看起来非常笨拙并且给用户带来了糟糕的体验。 (5认同)