【问题标题】:Token has been expired or revoked. error, while using gmail api令牌已过期或撤销。错误,在使用 gmail api 时
【发布时间】:2021-10-26 06:59:47
【问题描述】:

我有一个机器人可以检查 gmail 是否有新消息,并向我发送带有文本的通知到电报。我的应用托管在谷歌云上,并在测试模式下运行。根据this answer,OAuth 令牌将在 1 周后过期。我尝试了该答案中提到的所有建议,但没有任何帮助。我只想在服务器上运行我的应用程序。

我尝试创建一个新令牌,但是当我使用它们时,我收到了这个错误:

oauthlib.oauth2.rfc6749.errors.MismatchingStateError: (mismatching_state) CSRF Warning! State not equal in request and response.

我的请求代码:

creds = None
if os.path.exists('token.json'):
    creds = Credentials.from_authorized_user_file('token.json', self.SCOPES)

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', self.SCOPES)
        creds = flow.run_local_server(port=0)

    with open('token.json', 'w') as token:
        token.write(creds.to_json())

service = build('gmail', 'v1', credentials=creds)
try:
    # Do my stuff
    text = self.__get_new_msgs_text(service, 'me')
    return text
except NotFindException:
    raise NotFindException()

【问题讨论】:

    标签: python google-api bots gmail-api


    【解决方案1】:

    如果您的应用仍处于测试阶段,则刷新令牌将在 7 天后expire,您需要将您的应用设置为生产。

    生产中的应用

    可以在您的项目的谷歌云控制台的同意屏幕上找到。

    【讨论】:

    • 我将我的应用程序状态设置为“生产中”,但使用相同的 oauth 凭据我有同样的错误。如果我生成新的 oauth 凭据,我有 400:redirect_uri_mismatch,我从下面的上下文菜单中将 redirect_uri 添加到我的凭据中,然后转到此 uri,我的控制台中有错误消息:oauthlib.oauth2.rfc6749.errors.MismatchingStateError: (mismatching_state) CSRF警告!请求和响应中的状态不相等。可能是我做错了吗?
    • redirect_uri_mismatch 是完全不同的错误消息,与您的刷新令牌过期无关。该视频将向您展示如何解决该问题youtube.com/watch?v=V0-4LnHwFho
    • 我在尝试修复“刷新令牌已过期”错误时遇到了 redirect_uri_mismatch 错误,并且您的视频中的错误与 java 脚本源重定向有关,但根据授权 redicret uris 我有错误。我尝试将此 uri 输入到我的 OAuth 2.0 客户端 ID 中,但这对我没有帮助。我在下面的上下文菜单中的消息:redirect_uri:localhost:53466。我将此 uri 复制到控制台,但它对我没有帮助。
    • 哦,对不起,我抓错了链接。这是服务器端重定向 uri youtube.com/watch?v=QHz1Rs6lZHQ。我想这与以下事实有关:如果您有一个 localhost 重定向 uri,它需要转到您的域,则您无法将项目设置为生产环境。
    • 我做的完全一样,但即使在测试模式下它也不起作用,我想我需要在另一个 gmail 上测试它。无论如何感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2021-05-09
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多