我开发了一个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。
之后,我尝试了:
我尝试了在Expo Google登录中涉及DEVELOPER_ERROR的现有线程中我可能未提及的任何事情。
我在下面的代码中提到的变量来自以下内容:
SHA1已生成并用于创建我的证书,它是我的OAuth Android客户端ID中使用的指纹。
我在文件中引用的客户端ID是我的OAuth Web客户端ID的ID。但是,我也尝试使用Android,但并没有改变任何东西。
api_key中的“ CurrentKey”是我的Firebase项目中的API密钥。
这是我的Google凭据页面的链接。
/ *我的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"
}
答案 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,它们以新的方式实现。