尝试在 React Native 中使用 GoogleSignIn,然后可能出现未处理的 Promise Rejection(id:错误:DEVELOPER_ERROR

Posted

技术标签:

【中文标题】尝试在 React Native 中使用 GoogleSignIn,然后可能出现未处理的 Promise Rejection(id:错误:DEVELOPER_ERROR【英文标题】:Trying to use GoogleSignIn in React Native then Possible Unhandled Promise Rejection (id: Error: DEVELOPER_ERROR 【发布时间】:2021-06-08 06:10:02 【问题描述】:

我已使用此链接https://rnfirebase.io/auth/social-auth 在 Firebase 上启用了 Google 登录,我的应用程序编译正常,但是当我按下登录按钮并选择一个 Google 帐户进行登录时,我得到了可能的未处理承诺拒绝(id:0):错误:DEVELOPER_ERROR https://rnfirebase.io/auth/social-auth 我有 Windows 10 和

react-native-cli: 2.0.1
react-native: 0.63.4
Node : v12.16.0

这里是 App.js

    import React , useState , useEffect from 'react';
    import  Text TextInput, View  from 'react-native';
    import ButtonTemplate from '../assets/ButtonTemplate'
    import auth from '@react-native-firebase/auth';
    import  GoogleSignin  from '@react-native-community/google-signin';

    const App = () => 

    useEffect(()=> 
        GoogleSignin.configure(
            webClientId: 'xxxxxxxxxxxxxx.apps.googleusercontent.com',
        );
        )

    async function onGoogleButtonPress() 
            // 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);
        
    const googleLogin=()=>
            console.log('Google SignIn');
            onGoogleButtonPress().then(() => console.log('Signed in with Google!'))
            

    return (
    <ButtonTemplate 
                text="Continue With Google" 
                backgroundColor='#5384ed'
                fontSize=16
                marginTop= '3%'
                iconText='G'
                justifyContent='flex-start'
                onPress=googleLogin
                />
    )
    ;

    export default App;

这是错误

    Possible Unhandled Promise Rejection (id: 0):
Error: DEVELOPER_ERROR
promiseMethodWrapper@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2258:45
signIn$@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:189098:72
tryCatch@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25048:23
invoke@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25221:32
tryCatch@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25048:23
invoke@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25121:30
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:25131:21
tryCallOne@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:27134:16
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:27235:27
_callTimer@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30674:17
_callImmediatesPass@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30713:17
callImmediates@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30930:33
__callImmediates@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2760:35
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2546:34
__guard@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2743:15
flushedQueue@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2545:21
flushedQueue@[native code]
callFunctionReturnFlushedQueue@[native code]

【问题讨论】:

【参考方案1】:

我有两个问题第一个是上面,第二个是An OAuth2 client already exists for this package name and SHA-1 in another project. 第二个问题是在 Firebase 中,同时在项目中添加 SHA1。 我解决了这个问题

    删除 debug.keystore 然后通过这个keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 10000重新生成它 然后在给出位于android/App/build.gradle then signingConfigs there is store password 的密码后,通过此命令keytool -keystore debug.keystore -list -v 得到SHA1 和SHA256 在 Firebase 我的项目中添加了 SHA1 和 SHA256 下载最新的 JSON 文件,将最新的 JSON 添加到我的项目android/App 文件夹中 然后通过cd android &amp;&amp; ./gradlew clean 清理gradle 卸载应用程序然后执行npx react-native run-android 现在它的工作:)

我使用了这个链接How to Implement Google Login in React Native with Firebase 还有一个Youtube视频Youtube Video Related Previous Link

【讨论】:

祝福您,先生!

以上是关于尝试在 React Native 中使用 GoogleSignIn,然后可能出现未处理的 Promise Rejection(id:错误:DEVELOPER_ERROR的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 create-react-native-app 项目 (expo) 中使用 react-native-fs

当 React Native IOS App 中的 FlatList 为空时,ListEmptyComponent 不显示消息

尝试在 react-native 的底部选项卡导航上添加图像时面临问题

在 React Native 中不能使用新导入的组件?

使用 React-Native-Router-Flux 在 React Native 中嵌套场景

在带有 wix/react-native-navigation 的模态中使用 react-native-gesture-handler (RNGH)