尝试在 React Native 中使用 GoogleSignIn 时出现错误:DEVELOPER_ERROR

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

我已在 Firebase 上启用 Google SignIn,并且还添加了 SHA-1 密钥。我的应用程序编译得很好,但是当我按下登录按钮并选择 Google 帐户进行登录时,我得到了

Possible Unhandled Promise Rejection (id: 0): Error: DEVELOPER_ERROR

当我尝试使用匿名登录时,没有收到任何错误。 我使用的是 Android,并且所有模块都有最新版本。 这是完整的错误代码:

[Fri Oct 23 2020 18:08:26.174]  WARN     Possible Unhandled Promise Rejection (id: 0):
Error: DEVELOPER_ERROR
promiseMethodWrapper@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2242:45
signIn$@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:102709:72
tryCatch@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:24976:23
invoke@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25149:32
tryCatch@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:24976:23
invoke@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25049:30
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25059:21
tryCallOne@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:27056:16
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:27157:27
_callTimer@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30596:17
_callImmediatesPass@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30635:17
callImmediates@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30852:33
__callImmediates@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2736:35
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2522:34
__guard@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2719:15
flushedQueue@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2521:21
flushedQueue@[native code]
callFunctionReturnFlushedQueue@[native code]

这是我的

App.js
:

import React, {useState, useEffect} from 'react';
import {View, Text, Button} from 'react-native';

import auth from '@react-native-firebase/auth';
import firebase from '@react-native-firebase/app';
import {GoogleSignin} from '@react-native-community/google-signin';

const firebaseConfig = {
  apiKey: 'xxxx',
  appId: 'xxxx',
  databaseURL: 'https://xxxx.firebaseio.com',
  messagingSenderId: 'xxxx',
  projectId: 'xxxx',
  storageBucket: 'xxxx.appspot.com',
};

if (!firebase.apps.length) {
  firebase.initializeApp(firebaseConfig);
}

const App = () => {
  useEffect(() => {
    // initialize the Google SDK
    GoogleSignin.configure({
      scopes: ['email'],
      webClientId:
        'xxxx.apps.googleusercontent.com',
      offlineAccess: true,
    });
  }, []);

  const googleLogin = async () => {
    // Get the users ID token

    const {idToken} = await GoogleSignin.signIn();
    // Create a Google credential with the token
    const googleCredential = auth.GoogleAuthProvider.credential(idToken);

    // Sign-in the user with the credential
    return auth().signInWithCredential(googleCredential);
  };

  return (
    <View>
      <Button title="Login" onPress={() => googleLogin()}></Button>
    </View>
  );
};

export default App;
firebase react-native google-signin react-native-firebase
5个回答
6
投票

您在 firebase 中的 SHA-1 密钥与您应用程序的 SHA-1 密钥不匹配。要获取正确的 SHA-1 密钥,请按照控制台中的命令和应用程序路径操作:

keytool -list -v -keystore ./android/app/debug.keystore -alias androiddebugkey -storepass android -keypass android


1
投票

出现这种情况有两个原因:

  1. 缺少 SHA-1 密钥,这已经有很多答案了
  2. 您的 SHA-1 密钥正在许多项目中使用,并且它们相互冲突。尝试删除 SHA-1 密钥,然后重新添加它们,然后下载 json 文件并再次运行。

0
投票

我的错误是我选择了错误的变体。 请注意,有 6 个键,其中 3 个相似,另外 3 个也相似。 将所有变体添加到 firebase sha-1 后,它起作用了。

in YourProject/android
run:
./gradlew :app:signingReport

如果你运行 ./gradlewsigningReport 它会打印许多签名报告,你可能不小心拿走了你的 sha-1 id

看到有

任务:react-native-firebase_auth:签名报告

但你可能需要

任务:应用程序:签署报告

它打印如下:

> Task :app:signingReport
Variant: debug
Config: debug
Store: C:\Users\user\Documents\projects\chatgptfriends\android\app\debug.keystore
Alias: androiddebugkey
MD5: 20:F4:61:48...
SHA1: 5E:8F:16:06:...
SHA-256: FA:C6:17:45:DC:09:03:78:...
Valid until: Wednesday, 1 May 2052
----------
Variant: release
Config: debug
Store: C:\Users\user\Documents\projects\chatgptfriends\android\app\debug.keystore
Alias: androiddebugkey
MD5: 20:F4:61:48:...
SHA1: 5E:8F:16:06:...
SHA-256: FA:C6:17:45:DC:...
Valid until: Wednesday, 1 May 2052
----------
Variant: debugAndroidTest
Config: debug
Store: C:\Users\user\Documents\projects\chatgptfriends\android\app\debug.keystore
Alias: androiddebugkey
MD5: 20:F4:61:48:...
SHA1: 5E:8F:16:06:...
SHA-256: FA:C6:17:45:DC:...
Valid until: Wednesday, 1 May 2052
----------

> Task :react-native-firebase_app:signingReport
Variant: debugAndroidTest
Config: debug
Store: C:\Users\user\.android\debug.keystore
Alias: AndroidDebugKey
MD5: D1:EA:B0:E0...
SHA1: 0B:76:BB:09...
SHA-256: 60:FE:E2:...
Valid until: Monday, 27 January 2053
----------

> Task :react-native-firebase_auth:signingReport
Variant: debugAndroidTest
Config: debug
Store: C:\Users\user\.android\debug.keystore
Alias: AndroidDebugKey
MD5: D1:EA:B0:E0...
SHA1: 0B:76:BB:09...
SHA-256: 60:FE:E2:...
Valid until: Monday, 27 January 2053
----------

> Task :react-native-firebase_firestore:signingReport
Variant: debugAndroidTest
Config: debug
Store: C:\Users\user\.android\debug.keystore
Alias: AndroidDebugKey
MD5: D1:EA:B0:E0...
SHA1: 0B:76:BB:09...
SHA-256: 60:FE:E2:...
Valid until: Monday, 27 January 2053
----------

> Task :react-native-google-signin_google-signin:signingReport
Variant: debugAndroidTest
Config: debug
Store: C:\Users\user\.android\debug.keystore
Alias: AndroidDebugKey
MD5: D1:EA:B0:E0...
SHA1: 0B:76:BB:09...
SHA-256: 60:FE:E2:...
Valid until: Monday, 27 January 2053
----------

0
投票

如果你正确完成了每一步,但它仍然不起作用

然后,尝试在谷歌云控制台中设置同意屏幕> OAuth同意屏幕并完成所有步骤,可选>记住不要给出多个范围,因为它将需要进一步的步骤来验证用户。


-1
投票

问题出在 SHA-1 密钥上。当我们使用

gradlew signingReport
命令时,会创建多种类型的
varient
登录报告。因此,请使用与 Varient 相关的 SHA-1 密钥:relese

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