世博会 Google 登录:错误 400:invalid_request

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

我正在开发适用于 iOS、Android 和 Web 的 React Native。今年早些时候,我负责 Android 方面的同事遇到了 Google Sign In 问题,他们的解决方案是完全删除它。

我现在正在尝试重新实现这一点。我在 Web 或 iOS 上没有任何问题,但在 Android 上,我收到以下错误:

错误 400:无效_请求
您无法登录此应用,因为它不符合 Google 保护应用安全的 OAuth 2.0 政策。
您可以让应用开发者知道此应用不符合一项或多项 Google 验证规则。

然后在

Request Details
部分说:

如果您是应用开发者,请确保这些请求详细信息符合 Google 的政策。

  • redirect_uri:exp://192...*:19000

我已检查我的

app.json
,以确保我的凭据与我的 Google Cloud Console API 凭据以及 Firebase 凭据相匹配。

我已遵循 Expo 的文档,并且我在 Web 和 iOS 上正确完成了所有操作。

任何帮助将不胜感激,如果需要更多信息,请告诉我。谢谢

编辑

我确实进入了我的

Authorised redirect URIs
并尝试添加
exp://192.*.*.*:19000
,但它不允许我这样做。

android react-native expo google-oauth google-signin
3个回答
0
投票

答案: 您不能将

exp://192.*.*.*:19000
用作具有 Web 应用程序凭据的重定向 uri。必须是 重定向 URI 必须使用 HTTPS 方案,主机不能是原始 IP 地址,重定向 URI 不能包含某些字符,包括:通配符 ('*')

背景信息。

google授权的客户端类型有多种

  1. 网络
  2. 手机
  3. 本机(桌面)
  4. 服务帐户。

每种类型都使用略有不同的授权类型。安装的应用程序必须将授权返回到其来源或本地主机。 Web应用程序,授权返回到有效的网址。

对于 Web 应用程序和已安装的应用程序,重定向 uri 用于告诉授权服务器允许将授权代码发送回的位置。这是一项安全措施,可确保任何人都无法通过添加任何重定向 uri 来劫持您的授权。

您无法登录此应用程序,因为它不符合 Google 的 OAuth 2.0 政策以确保应用程序安全。

此错误消息告诉您应用程序发送的重定向 uri 不是有效的重定向 uri。 重定向 URI 验证规则

你可能被这些困住了

您的重定向 URI

exp://192.*.*.*:19000
不是 https,它是一个 IP 地址。这两者都是不允许的。

对于移动应用程序来说,情况完全不同。这种形式的授权通常使用包名称和 SHA-1 来授权用户并正确返回令牌。

我不明白你将如何让它与 React 一起工作。


0
投票

我设法通过设置使其工作

  1. 将 app.json 中的方案设置为同一文件中 android.package 的值:
"expo": {
    "scheme": "com.something.somethingelse"
  1. 设置 Google.useIdTokenAuthRequest 类似
const [request, response, promptAsync] = Google.useIdTokenAuthRequest(
        {
            clientId: 'myandroid-token.apps.googleusercontent.com',
        },
        { native: 'com.something.somethingelse://' }
    );

clientId 必须是 android 客户端 id,而不是 Web id


0
投票

如果您使用“expo-auth-session”库,请尝试将版本更改为“^4.0.3”。它帮助了我。

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