【问题标题】:How to Reset Client Secret Without Manual Intervention如何在没有人工干预的情况下重置客户端密码
【发布时间】:2022-12-12 09:53:51
【问题描述】:

目前我正在使用此处概述的步骤:https://developers.google.com/gmail/api/quickstart/python 以使用 gmail API。但是,我的令牌每周都会过期,我必须重置密码、删除令牌 pickle 文件并重新下载凭据 json。

我正在寻找一种无需人工干预即可重置机密的方法。这可能吗?

有关更多详细信息,代码在看到凭据已过期并尝试刷新时失败:

if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)

收到错误:google.auth.exceptions.RefreshError: ('invalid_client: Unauthorized', {'error': 'invalid_client', 'error_description': 'Unauthorized'})

这是我通常会转到 API 控制台 -> 重置密码 -> 下载 json 文件 -> 删除 token.pickle 然后重新运行的时间。

我还没有尝试过任何其他 api 方法。我在搜索时发现的大多数事情都涉及获取凭据,而不是重置密码。如果已经有一个 api 方法,我还没有看到它。

【问题讨论】:

    标签: python google-api google-oauth gmail-api google-api-python-client


    【解决方案1】:

    如何重置秘密

    无法以编程方式创建新的 credentials.json 文件,这必须由开发人员手动完成

    你真正的问题。

    您遇到的问题是您的应用程序仍处于测试阶段。处于测试阶段的应用程序的刷新令牌在 7 天后过期

    要解决此问题,只需在 oauth2 同意屏幕上的谷歌云控制台中将您的应用程序设置为生产环境即可。

    如果您查看 expiration 的文档,它会说明

    为外部用户类型配置了 OAuth 同意屏幕且发布状态为“测试”的 Google Cloud Platform 项目将获得 7 天后到期的刷新令牌。

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 2018-07-28
      • 2013-02-08
      • 2017-07-07
      • 2018-12-21
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多