Roe*_*pan 9 react-native appauth expo
我的应用程序与 Expo 一起使用,我import * as Google from "expo-google-app-auth";用于来自谷歌的登录用户。在开发模式下,它的工作正常。
但在独立模式下,
它重定向我以选择电子邮件,在我选择它之后将我重定向到 google.com 主页而不是返回到我的应用程序
问题:为什么将我重定向到谷歌,我该如何处理(再次 - 在开发模式下它的工作)
我的谷歌登录应用
try {
const result = await Google.logInAsync({
androidClientId: "556835760268-jm5v5u3h1bu4rcontent.com",
androidStandaloneAppClientId: "556835760268-jm5v5u3h1bu4uea3jr788tent.com",
scopes: ["profile", "email"],
});
Run Code Online (Sandbox Code Playgroud)
我的 app.json 文件:
{
"expo": {
"name": "Lior",
"slug": "Lior",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"scheme": "myapp",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"bundleIdentifier": "com.roei.liorApp",
"buildNumber": "1.0.0"
},
"web": {
"favicon": "./assets/favicon.png"
},
"android": {
"package": "com.roei.liorApp",
"versionCode": 1,
"config": {
"googleSignIn":{
"apiKey": "AIzaSyD4K3trmw",
"certificateHash": "89B503B4EDC94"
},
"googleMaps": {
"apiKey": "AM35K3trmw"
}
Run Code Online (Sandbox Code Playgroud)
}
我怀疑问题只是没有指定重定向 URI 信息。
一般来说,您的身份验证器(在本例中为 Google)需要知道在完成身份验证后将用户发送到哪里(即什么 URL)。就我而言,我使用 AuthSession 并且必须指定由 AuthSession 生成的redirectUri,它最终将提供链接回应用程序的返回路径,以便它可以在登录后自动处理恢复应用程序逻辑。
如果身份验证器(谷歌)不知道登录后将用户发送到哪里,那么它只会将您重定向到它认为安全的地方(即谷歌的网站),这似乎并不是不合理的。
至于与开发模式的不一致,很可能会做出一些合理的默认值,出于安全原因,这些默认值不/不能/不应该在全局模式下。AuthSession 和 Expo Google 文档上都有文字说明了预期的这种类型的不一致。例如,这里
关于redirectUrl的注意事项:如果您选择提供自己的redirectUrl,则它应该以AppAuth.OAuthRedirect返回的值开头。这样,无论您是在 Expo Go 中测试还是作为独立应用程序进行测试,该方法都将正确且一致地运行。
另外,如果您还没有这样做,请务必查看并实施部署到 Android 上的独立应用程序的具体说明
最后,考虑切换到 AuthSession,因为之前的回答者正确地指出它当前已被标记为已弃用。您可以在文档页面顶部看到巨大的已弃用横幅,如本答案中所述。如果您必须让某些东西正常工作,不妨让它与最新支持的版本一起工作。
如果您确实使用 AuthSession,请查看本节,其中包含有关如何生成重定向 URI 的以下参考信息
“AuthSession.makeRedirectUri() 为当前平台和环境创建一个重定向url。您需要手动定义将在裸工作流程React Native应用程序或Expo独立应用程序 中使用的 重定向,这是因为它无法自动推断”。
请注意,当您设置redirectUri 功能时,无论您如何设置,您还需要将google 端的URI 列入白名单。这是因为身份验证器 (Google) 需要知道要求其移交凭据的 URI 模式是值得信赖的。这样,如果有人试图冒充您并让他们将您的用户凭据发送到不受信任的 URL,Google 就不会这样做。
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |