我需要从本地编写的python代码中调用(OAuth-客户端凭据流和授权代码流(http云函数。
我已经在GCP项目上创建了OAuth 2.0客户端ID。
下面的代码用于获取访问令牌,但这是一个错误的谷歌登录页面。我们可以帮助理解如何从本地python代码中调用云函数吗?任何例子或指导都会很有帮助。
from google_auth_oauthlib import flow
oauthcredential= "client_secret.json" # OAuth 2.0 Client ID JSON
launch_browser = True # when using locally and False when remote
appflow = flow.InstalledAppFlow.from_client_secrets_file(oauthcredential,scopes=['https://www.googleapis.com/auth/userinfo.profile'])
if launch_browser:
appflow.run_local_server()
else:
appflow.run_console()
credentials = appflow.credentials
要调用受保护的云函数,需要一个身份令牌,而不是访问令牌。您无法从代码中自己的用户凭据生成id令牌(仅使用gcloud
命令行(,并且您使用服务帐户密钥文件来实现这一点(正如我在本文中所解释的,这并不理想(。
在您的代码中,设置引用服务帐户密钥文件路径的GOOGLE_APPLICATION_CREDENTIALS
环境变量,然后您可以使用fetch_id_token
函数来获得id令牌