Expo Google 登录 DEVELOPER_ERROR

Posted

技术标签:

【中文标题】Expo Google 登录 DEVELOPER_ERROR【英文标题】:Expo Google-Sign-In DEVELOPER_ERROR 【发布时间】:2019-12-21 15:38:07 【问题描述】:

我开发了一个 React Native 应用程序,并使用 Expo Google-Sign-In 进行 Firebase 身份验证。当我尝试在 android 上的独立 APK 上进行身份验证时收到错误“DEVELOPER_ERROR”。

最初,我使用的是“Expo Google”,但那是 现在已弃用,我的登录按钮在我的独立 APK 上没有做任何事情。使用 Expo Google 方法,我发现我必须设置 androidStandaloneAppClientId。即使在那之后,登录在身份验证后仍然卡在谷歌主页上。我尝试了使用自定义重定向 URI 的解决方案,如

redirectUrl:$AppAuth.OAuthRedirect:/oauth2redirect/google

但这导致了另一个错误:redirect_uri 不匹配。

我改用 Expo Google-Sign-In 库,每次尝试进行身份验证时都会出现 DEVELOPER_ERROR。

之后,我尝试了:

下载 google-services.json 并在我的应用中使用它 在 google-services.json 和 Firebase 中设置 SHA1 指纹 将 app.json 中 android.configuration.certificate 哈希中的 certificateHash 设置为我的 SHA1 指纹。 检查并确保包名称设置正确

我尝试了在 Expo Google-Sign-In 中涉及 DEVELOPER_ERROR 的现有线程中可能没有提及的其他任何内容。

我在下面的代码中提到的变量来自以下:

SHA1 已生成并用于创建我的凭据,它是我的 OAuth Android 客户端 ID 中使用的指纹。

我在整个文件中引用的客户端 ID 是我的 OAuth Web 客户端 ID 的 ID。但是,我也尝试使用 Android 版本,但并没有改变任何东西。

api_key 中的“CurrentKey”是我的 Firebase 项目中的 API 密钥。

这是我的 Google 凭据页面的链接。

https://imgur.com/a/u8cPxQl

/* 我的 app.json: */


  "expo": 
    "name": "AssistiveNote",
    "privacy": "public",
    "description": "A note app for people who have trouble reading text.",
    "slug": "assistivenote",

    "sdkVersion": "33.0.0",
    "version": "2.0.0",
    "orientation": "portrait",
    "icon": "./screens/images/icon.png",


    "ios": 
      "bundleIdentifier": "com.danyalbabar.assistivenote"
    ,

    "android": 
      "versionCode": 2,
      "package": "com.danyalbabar.assistivenote",
      "googleServicesFile": "./google-services.json",
      "permissions": [ " " ],
      "config": 
        "googleSignIn": 
            "certificateHash": "XXXX"
        
      
    

  

我的 google-services.json:

  
  "project_info": 
    "project_number": "XXXX",
    "firebase_url": "https://era-gvision.firebaseio.com",
    "project_id": "era-gvision",
    "storage_bucket": "era-gvision.appspot.com"
  ,
  "client": [
    
      "client_info": 
        "mobilesdk_app_id": "XXXX",
        "android_client_info": 
          "package_name": "com.danyalbabar.assistivenote"
        
      ,
      "oauth_client": [
        
          "client_id": "XXXX",
          "client_type": 3
        
      ],
      "api_key": [
        
          "current_key": "XXXX"
        
      ],
      "services": 
        "appinvite_service": 
          "other_platform_oauth_client": [
            
              "client_id": "XXXX",
              "client_type": 3
            
          ]
        
      
    
  ],
  "configuration_version": "1"

【问题讨论】:

【参考方案1】:

这是配置不匹配。确保您的 android/app/google-services.json 正确。

您可能需要将 SHA 证书指纹添加到 Firebase 配置中。按照这篇文章中的说明查找您的 SHA1 指纹:SHA-1 fingerprint of keystore certificate。然后,转到https://console.firebase.google.com/,选择您的应用,并在项目设置(左上角的齿轮图标)-> 您的应用-> SHA 证书指纹下添加 SHA1 值

如果您将配置对象中的 webClientId 传递给 GoogleSignin.configure() ,请确保它是正确的。您可以从Google Developer Console 获取您的 webClientId。它们列在“OAuth 2.0 客户端 ID”下。

如果您在调试模式下运行您的应用而不使用 webClientId,或者您确定它是正确的,则问题可能是签名(SHA-1 或 SHA-256)不匹配。您需要在 android/app/build.gradle 中添加以下内容:

signingConfigs 
  debug 
       storeFile file(MYAPP_RELEASE_STORE_FILE)
       storePassword MYAPP_RELEASE_STORE_PASSWORD
       keyAlias MYAPP_RELEASE_KEY_ALIAS
       keyPassword MYAPP_RELEASE_KEY_PASSWORD
  
  release 
       ...
  

【讨论】:

我已经多次尝试了所有指纹,我几乎可以肯定它们是正确的。但是,我不确定如何通过编辑 build.gradle 文件来解决您的建议。问题是,我的 React Native 项目中没有任何“等级”文件或“android”文件夹。我也在 Visual Studio Code 中开发,而不是 Android Studio。如果您对如何转换我的项目以便访问此 build.gradle 文件有任何建议,我想试试您的建议。【参考方案2】:

总的来说,这个 API 似乎有很多不正常的行为,现在它已被弃用。当时我继续使用电子邮件/密码身份验证,但现在更新了以新方式实现的 Expo API。

https://docs.expo.io/guides/authentication/

【讨论】:

以上是关于Expo Google 登录 DEVELOPER_ERROR的主要内容,如果未能解决你的问题,请参考以下文章

EXPO Google 登录和 Android 应用问题

如何修复 Google expo auth session 登录错误“尝试完成登录时出现问题”

Expo Google登录在IOS的试飞中不起作用

在独立的 Android 应用程序上使用 expo-auth-session 进行 Google 登录,浏览器关闭但没有任何反应

Android Google 登录 DEVELOPER_ERROR 10

错误:verifier._reset 不是函数。尝试使用 Firebase 使用手机登录时,反应原生和 Expo