【问题标题】:Accessing Yahoo Contacts through OAuth on App Engine (Python)在 App Engine (Python) 上通过 OAuth 访问 Yahoo 联系人
【发布时间】:2011-04-18 14:20:42
【问题描述】:

我有一个现有的 web 应用程序,在 App Engine 上以 Python 运行,用户可以使用 Yahoo 帐户通过 open-id 登录。现在,一旦他们登录,我希望他们能够通过 OAuth 访问他们的 Yahoo 联系人。我正在通过 Yahoo Python SDK 工作,只是卡住了。

我有consumer key,consumer secret,app ID,和callback URL是同一个页面,使用离开。转到 Yahoo 登录页面似乎工作正常,用户带着 auth_token 和 auth_verifier 回到我的网站。我该怎么处理这些?我需要为将来的请求存储哪些字符串?这些类型的请求在任何地方都有很好的示例代码吗?谢谢。

【问题讨论】:

    标签: python google-app-engine oauth yahoo-oauth


    【解决方案1】:

    您应该寻找 OpenID+Oauth 混合协议

    OpenID+OAuth 混合协议允许 Web 开发人员将 OpenID 请求与 OAuth 身份验证请求结合起来。
    此扩展程序对于同时使用 OpenID 和 OAuth 的 Web 开发人员很有用,特别是因为它通过请求用户批准一次而不是两次来简化用户的流程。

    OAuth 的目标是获得一个 来自谷歌的访问令牌,它可以 然后用于交换用户特定的 Google 服务的数据(例如 日历信息或地址 书)。常规 OAuth 流程是 四步顺序:(1)要求一个 “请求”令牌,(2)请求令牌 被授权,这会触发用户 批准,(3)交换授权 请求“访问”令牌的令牌, (4) 使用访问令牌 与用户的 Google 交互 服务数据。如需更详细的 说明,请参阅 Web 的 OAuth 应用程序。

    使用 OpenID+OAuth,此序列 基本保持不变。这 不同的是,得到一个 授权的 OAuth 请求令牌(步骤 1 和 2) 包含在 OpenID 中 身份验证请求。这样, 用户可以批准登录和服务 同时访问。

    Here 演示和source code (php) 使用 Google 的混合协议。

    Herehere Yahoo 文档将 OpenID 身份验证请求与 OAuth 请求令牌的批准相结合。

    【讨论】:

    • 实际上,我发现第一次用户使用他们的 open-id 登录很好,但担心授予对他们信息的访问权限。因此,登录后与 Yahoo 联系人同步是可选的,但我试图将 OAuth 和登录分开。
    • @Ritchie 我明白了。在这种情况下,我认为您应该在 DataStore 中存储 OpenID 流为您提供的预先批准的请求令牌。使用此令牌,您将能够从第 4 步开始启动 OAuth 流程described here;简而言之,您跳过无聊的部分以获取授权的请求令牌,以获取授予对用户信息的访问权限的访问令牌。
    • 谢谢。我已经使用 python SDK 将事情基本上放在了一起。对于其他尝试过此操作但没有发现 Yahoo 文档很有帮助的人,我建议查看此示例代码 rocketscience.itteco.org/2009/12/16/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2011-09-02
    相关资源
    最近更新 更多