首页 > 解决方案 > Python - Google OAuth 从授权码生成令牌

问题描述

我有一个 python 谷歌云函数,它接收 OAuth 授权代码作为参数。我想将此代码交换为可用于验证服务对象的令牌。

代码在外部生成并作为字符串参数传递给此函数。

我查看了google_auth_oauthlib.flow的文档。但它期望创建一个流对象来处理身份验证。就我而言,我只有代码作为结果。

如何将授权码作为字符串交换为令牌?

标签: pythonoauth-2.0google-cloud-functionsgoogle-auth-library

解决方案


除了授权代码之外,您还需要更多信息。谷歌关于如何将授权码交换为访问令牌的文档在这里:刷新和访问令牌的交换授权码

具体来说,除了code,您还需要:

  • client_id:从 API 控制台 [凭据页面] |( https://console.developers.google.com/apis/credentials ) 获取的客户端 ID。
  • client_secret:从 API Console Credentials 页面获取的客户端密码。
  • grant_typeauthorization_code
  • redirect_uri: 初始授权请求中使用的重定向 URI。如果这是针对可能是urn:ietf:wg:oauth:2.0:oob(针对带外)的 CLI(或类似)

其中大多数 ( client_id, client_secret, grant_type) 是静态的,因此您可以将它们用作云功能中的配置。如果redirect_uri您确定生成code.

有了这些信息,您应该能够在链接示例中创建 Flow 对象并获取令牌。

作为将所有这些配置存储在云函数中的替代方法,您可以使用托管 OAuth 服务,如Xkit我工作的地方),它处理授权过程并允许您从任何地方(包括云函数)检索访问令牌,只需一个 API钥匙。


推荐阅读