You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL2环境调用Gmail API时OAuth登录提示浏览器不支持JavaScript的问题求助

WSL2环境调用Gmail API时OAuth登录提示浏览器不支持JavaScript的问题求助

我最近在尝试调用Gmail API,已经严格按照官方文档的步骤操作了,但怀疑问题出在WSL2环境运行脚本这件事上。原本我以为使用API的时候不需要浏览器交互,结果实际运行时遇到了麻烦。

运行脚本后,终端里会出现登录相关的提示,当我输入账号凭证并点击“Next”后,就弹出了下面这个错误:

Google

Couldn't sign you in

The browser you're using doesn't support JavaScript, or has JavaScript turned off.

To keep your Google Account secure, try signing in on a browser that has JavaScript turned on. Learn more

在这个登录提示的上方,还有一个“failed”提示和一串很长的链接。

有没有其他同学在WSL2里遇到过同样的问题呀?


我使用的脚本代码:

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# If modifying these scopes, delete the file token.json.
SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"]


def main():
    """Shows basic usage of the Gmail API.
    Lists the user's Gmail labels.
    """
    creds = None
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists("token.json"):
        creds = Credentials.from_authorized_user_file("token.json", SCOPES)
    # If there are no (valid) credentials available, let the user log in.
    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)
        # Save the credentials for the next run
        with open("token.json", "w") as token:
            token.write(creds.to_json())

    try:
        service = build("gmail", "v1", credentials=creds)
        results = service.users().labels().list(userId="me").execute()
        labels = results.get("labels", [])

        if not labels:
            print("No labels found.")
            return
        print("Labels:")
        for label in labels:
            print(label["name"])

    except HttpError as error:
        # TODO(developer) - Handle errors from gmail API.
        print(f"An error occurred: {error}")


if __name__ == "__main__":
    main()

备注:内容来源于stack exchange,提问作者Ian Aragao

火山引擎 最新活动