我正在开发一个基于网络的应用程序,它将允许我信任的员工编辑我的 YouTube 频道的标题、描述、标签等。在尝试“选择加入”我自己的应用程序时,我被发送到回调 URI,并带有错误消息:
您无法登录此应用程序,因为它不符合 Google 的 OAuth 2.0 政策以确保应用程序安全。您可以让应用开发者知道此应用不符合一项或多项 Google 验证规则。
一些历史 - 当我第一次尝试获取代码以交换授权令牌时,它确实有效!然而,当我编写代码来获取代码并将其交换为授权令牌时,我多次重复了“选择加入”过程。在我能够完善我的代码以将代码交换为授权令牌之前,我开始收到错误消息,大意是该应用程序不安全且无法登录。
更多历史记录 - 在阅读了一篇描述类似内容的 Stack Overflow 文章后,我删除了该项目,创建了一个新项目,生成了新的客户端 ID 和客户端密钥,然后重复测试,但出现同样的失败。
我是该应用程序的唯一测试用户。我在控制台中找不到任何通知来提醒我触发故障的安全问题的性质。我已查看 OAuth 政策:
并且找不到任何哪怕是一点点错误的地方。
出了什么问题,如何解决?
我也遇到同样的问题
对我来说,事实证明我的
redirect_uri
无效。给出错误的redirect_uri
:
http://localhost:8000api/vi/oauth/google
我的情况有什么问题:
/
之前加上 api
。vi
与我在 GCP 上注册的不同。应该是v1
我建议您在应用程序进行代码交换时打印出
redirect_uri
,并仔细验证每个字符。
此外,请查看 Google 上的重定向 URI 验证规则文档,看看您的
redirect_uri
是否符合所有规则。
您可能更改了项目运行的端口,或者您没有在Google Cloud中定义项目运行的地址。
Google Cloud → API 和服务 → 凭据 → OAuth 2 客户端 ID → 将 授权 JavaScript 源更改为您的应用程序在本地或共享主机上运行的端口。
该 URL 可能需要一些时间来定义,因此可能无法立即生效,因此您也可以创建一个新的凭据。
对我来说,redirect_uri 是正确的,但由于出现错误,请求了不同客户端 ID 的访问代码。
如果您像我一样使用 Firebase 和 React Native Expo 并收到此错误,您需要做的就是从 Firebase 复制您的 Web 客户端 ID 并粘贴它 https://console.cloud.google.com/apis/credentials/oauthclient/[Web 来自 firebase 的客户端 ID]
这将打开由 firebase 生成的身份验证 oauth 客户端,您将在授权重定向下看到 url https://appname.firebaseapp.com/__/auth/handler
然后在您的 React Native Expo 代码中
const [request, response, promptAsync] = useAuthRequest( { clientId: 'client ID from firebase', // web client id from firebase scopes: ['profile', 'email'], // what the app is requesting access to from gmail redirectUri: 'https://appname.firebaseapp.com/__/auth/handler',// the redirect url that the user will be directed back to after auth with google },
这应该可以解决我的错误,但是当然还有更多代码可以添加您收到此错误的原因是因为您需要在代码中设置与 gcp 中相同的重定向 uri 我希望有一天这可以帮助某人