Google API OAuth 2.0-redirect_uri_mismatch

问题描述 投票:0回答:1

我在 StackOverflow 上阅读了大量有关此问题的帖子,但没有一个反映我的情况(例如,其他帖子中的解决方案是我已经完成的事情,并且错误仍然存在)。据我所知,我已经按照所有说明进行了操作,但我绝对坚持这个

400 - redirect_uri_mismatch

TL;博士:

Python + Django 网络应用程序。

  1. OAuth 客户端被列为
    web application
    并且未发布。
  2. 重定向 URI 已添加到
    Credentials
    ,带或不带尾部斜杠。
  3. 使用通用
    Flow
    +
    web
    -关键字,而不是
    InstalledAppFlow
  4. 重定向 URI 加载并响应请求
  5. 还是
    redirect_uri_mismatch
    :-(

详细信息、屏幕截图、代码等,如下相关。

1.我的应用程序已注册为“网络应用程序”并且处于
Testing
模式:

2.我已将redirect_uri添加到Cloud Console:

您会看到我添加了它的变体,以便我可以尝试所有这些 -

127
localhost
,以及带或不带尾部斜杠。

3.我没有使用 InstalledAppFlow,而是使用带有“web”关键字的通用 Flow:

    REDIRECT_URI   = "http://localhost:8000/dev/test/onboard_finalize"

    CLIENT_SECRETS = {
        "web": {
            "client_id": {CLIENT_ID},
            "client_secret": {CLIENT_SECRET},
            "redirect_uris": [REDIRECT_URI],
            "project_id": {PROJECT_ID},
            "auth_provider_x509_cert_url": AUTH_URL,
            "auth_uri": "https://accounts.google.com/o/oauth2/auth",
            "token_uri": "https://oauth2.googleapis.com/token"
        }
    }

    sesh = OAuth2Session(CLIENT_ID, scope=SCOPES, redirect_uri=REDIRECT_URI)

    flow = Flow(
        oauth2session = sesh,
        client_type   = "web",
        client_config = CLIENT_SECRETS,
        redirect_uri  = REDIRECT_URI,
        code_verifier = self.state,
    )

    url, state = flow.authorization_url(prompt="select_account")

    print("Using REDIRECT_URI:", REDIRECT_URI)
    print("Generated URL:", url)

然后得出:

Using REDIRECT_URI: http://localhost:8000/dev/test/onboard_finalize  

Generated URL: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=****.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fdev%2Ftest%2Fonboard_finalize&scope=openid+profile&state=lVtLKgPPtyhjjpll5Wd8KEnZjSqGty&code_challenge=****&code_challenge_method=S256&prompt=select_account&access_type=offline

然而:

单击模态产量:

Request details:  
redirect_uri=http://localhost:8000/dev/test/onboard_finalize

在本例中对应于 Cloud Console 中的 uri #4。

oauthplayground
也不起作用,错误是一模一样的。事实上,对于列出的所有 URI,该错误都是完全相同的。

4.我不认为这是相关的,但因为我已经尝试了其他一切 - 重定向 uri 确实有效:

google-api google-oauth google-api-python-client
1个回答
0
投票

上述设置没有任何问题,谷歌只是出于某种原因需要“几个小时”以上的时间才能将它们传播到任何需要的地方。很难确切地说需要多长时间,但在我上次测试中,端点已配置了至少 9 个小时。据我所知,大约在 9 到 24 小时之间。

© www.soinside.com 2019 - 2024. All rights reserved.