【问题标题】:google OAuth Refresh Token keeps expiring谷歌 OAuth 刷新令牌不断过期
【发布时间】:2021-09-30 13:00:09
【问题描述】:

嘿嘿
我无法让我的 google OAuth 刷新令牌对我正在编写的小型应用程序有效。我需要从电子表格中获取数据到服务器/桌面应用程序。 我正在尝试使用 OAuth 进行授权,它可以工作一周,然后停止。
根据这篇文章,这是预期的行为:
https://stackoverflow.com/a/67966982/16509954
同一线程中的另一个答案发布了一种如何永久授予访问权限并且不会让您的令牌过期的方法: https://stackoverflow.com/a/66292541/16509954
我这样做了,但我的令牌仍然过期。 任何想法我做错了什么?

我正在使用 python 库,我的代码与文档 quickstart.py 中给出的示例几乎相同:
https://developers.google.com/sheets/api/quickstart/python

【问题讨论】:

    标签: python google-oauth


    【解决方案1】:

    刷新令牌可能会因多种原因而过期,其中最主要的原因是您的应用程序仍处于测试阶段。

    在 Google Cloud Console 中将您的应用程序投入生产并对其进行验证,并且刷新令牌不会在一周后过期。

    from apiclient.discovery import build
    from oauth2client.service_account import ServiceAccountCredentials
    
    
    SCOPES = ['https://www.googleapis.com/auth/drive.drive']
    KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
    VIEW_ID = '<REPLACE_WITH_VIEW_ID>'
    
    
    def initialize_sheets():
      """Initializes an sheets service object.
    
      Returns:
        An authorized sheets  service object.
      """
      credentials = ServiceAccountCredentials.from_json_keyfile_name(
          KEY_FILE_LOCATION, SCOPES)
    
      # Build the service object.
      service = build('sheets', 'v4', credentials=creds)
    
      return service 
    

    【讨论】:

    • 谢谢,但这只是我将使用的应用程序。验证需要以下内容: 1. 指向您应用隐私政策的官方链接 2. 一段 YouTube 视频,展示您计划如何使用从范围内获得的 Google 用户数据 3. 告诉 Google 为什么您需要访问敏感和/ 或受限的用户数据 4. 您在 Google Search Console 中验证的所有域这对于私人目的来说是不可行的。
    • 私人或公共目的这就是现在的工作方式。如果您想要一个持续时间超过 7 天的刷新令牌,您需要在生产中设置它并完成验证过程。否则,您将拥有 7 天的刷新令牌。您没有其他选择。此更改影响了许多像您一样使用一次性脚本的开发人员。在谷歌给我们另一个选择之前,我们被困住了。
    • 使用服务帐户怎么样?这会起作用还是受到同样的限制? developers.google.com/identity/protocols/oauth2/service-account
    • 是的,谷歌表格 API 支持服务帐户。他们不需要验证
    • 检查可以帮助您入门的编辑。您只需要更改您的身份验证,所有其他代码都应该可以正常工作。代码未经测试。
    猜你喜欢
    • 2015-05-17
    • 2018-09-07
    • 2015-11-04
    • 2013-09-13
    • 2022-11-11
    • 2021-06-14
    • 2016-09-10
    • 2016-12-11
    • 2014-01-01
    相关资源
    最近更新 更多