【问题标题】:Sharing Facebook Access Tokens Across Apps跨应用共享 Facebook 访问令牌
【发布时间】:2015-04-18 05:54:03
【问题描述】:

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

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

谢谢。

-肯

【问题讨论】:

    标签: oauth-2.0 facebook-oauth facebook-access-token


    【解决方案1】:

    即使该用户访问令牌仅为一个应用程序颁发,它也可以在任何其他应用程序中轻松使用。

    例子:

    1. 在此处https://developers.facebook.com/tools/explorer/?method=GET&path=me 获取“Graph API Explorer”应用程序的访问令牌并发出请求 - 您将看到您的数据。
    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 进行传输即可。

    【讨论】:

    • FB 数据政策的摘录指出了这一点——显然,您需要能够在您的本地应用程序和后端应用程序之间共享令牌,并且您可以这样做,因为两者还共享专有对 FB oauth API 的凭据访问。当然,OP 并不是真的要求这个。
    • @kingdango,两个应用程序不需要“共享对 FB oauth API 的独占凭证访问”。您可以从 FB "Graph API Explorer" 应用程序中检索访问令牌并在您自己的应用程序中使用它。
    【解决方案2】:

    关于:

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

    和,

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

    答案是No。来自规范OAuth2 section 10.3

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


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

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

    【讨论】:

    • 如果你有一个应用程序和一个网站可以协同工作(比如 Twitter 和 Twitter 应用程序)。如果 Twitter 想使用 OAuth2 与第三方(例如 Google)进行身份验证,您是否必须分别对应用程序和网站进行身份验证?看起来很笨拙,给用户带来不好的体验。
    • 我会将规范中的引用解释为“是的,这是可能的”,但“不,你不能这样做”,因为它会违反安全性。如果无法共享令牌,您就不需要保证它们的安全。
    【解决方案3】:

    每个访问令牌仅针对一个应用程序 - 它不能与不同的应用程序 ID 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2012-04-12
      • 2012-07-24
      • 1970-01-01
      • 2018-12-29
      相关资源
      最近更新 更多