世博会Google登录DEVELOPER_ERROR

时间:2019-08-15 06:19:08

标签: javascript react-native expo google-signin

我开发了一个React Native应用,并且我正在使用Expo Google登录进行Firebase身份验证。当我在Android上的独立APK上尝试进行身份验证时,收到错误消息“ DEVELOPER_ERROR”。

最初,我使用的是“ Expo Google”,但这是 现在已弃用,并且我的登录按钮对我的独立APK无效。使用Google Expo的方法,我发现必须设置androidStandaloneAppClientId。即使如此,身份验证后登录名仍停留在Google主页上。我尝试了使用自定义重定向URI的解决方案,如

redirectUrl:${AppAuth.OAuthRedirect}:/oauth2redirect/google

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

我改用了Expo Google登录库,这在每次尝试进行身份验证时都会给我一个DEVELOPER_ERROR。

之后,我尝试了:

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

我尝试了在Expo Google登录中涉及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"
}

2 个答案:

答案 0 :(得分:0)

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

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

如果要将配置对象中的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 {
       ...
  }

答案 1 :(得分:0)

总的来说,这个 API 似乎有很多损坏的行为,现在已弃用。我当时转而使用电子邮件/密码身份验证,但现在有更新的 Expo API,它们以新的方式实现。

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