React-native google auth android DEVELOPER_ERROR Code 10

Sep 28 2020

ฉันทำอะไรไป:

react-native init testAuthGoogle && cd testAuthGoogle && (cd android; ./gradlew signingReport) เพื่อสร้างโครงการใหม่และแสดง SHA1

> Task :app:signingReport
Variant: debugAndroidTest
Config: debug
Store: /Users/anand/ws/rn01/testAuthGoogle/android/app/debug.keystore
Alias: androiddebugkey
MD5: 20:F4:61:48:B7:2D:8E:5E:5C:A2:3D:37:A4:F4:14:90
SHA1: 55:88:11:06:2E:A3:CC:2C:4A:0D:EE:78:76:88:A6:F3:8C:AB:FF:88
SHA-256: FA:C6:17:45:DC:09:03:78:6F:B9:ED:E6:2A:96:2B:39:9F:73:48:F0:BB:6F:89:9B:83:32:66:75:91:03:3B:9C
Valid until: Tuesday, April 30, 2052

คัดลอก SHA1 ลงใน firebase และสร้างแอป Android

ดาวน์โหลดgoogle-services.jsonไฟล์เป็นandroid/app/google-services.json

ในandroid/build.gradle:

  • เพิ่มการพึ่งพา: classpath("com.google.gms:google-services:4.3.3")

ในandroid/app/build.gradle:

  • ใช้ปลั๊กอิน: apply plugin: "com.google.gms.google-services"
  • เพิ่มการอ้างอิงimplementation 'com.google.firebase:firebase-analytics:17.5.0'และimplementation 'com.google.firebase:firebase-auth:19.4.0'

ติดตั้งการอ้างอิงอื่น ๆ :

npm install --save @react-native-firebase/app @react-native-firebase/auth @react-native-community/google-signin

คัดลอกไฟล์client_idจากgoogle-services.jsonเพื่อใช้ใน app.js

เปลี่ยนรหัสในapp.js:

import React, { useEffect, useState } from 'react';
import { SafeAreaView, StyleSheet, ScrollView, View, Text, StatusBar } from 'react-native';
import { Colors } from 'react-native/Libraries/NewAppScreen';
import { GoogleSignin, GoogleSigninButton, statusCodes } from '@react-native-community/google-signin';
import auth from '@react-native-firebase/auth';
GoogleSignin.configure({ webClientId: '532405863926-94v4mgqg18ajc2g7tk6ttghvsnilooee.apps.googleusercontent.com' });
const App: () => React$Node = () => {
  const [user, setUser] = useState();
  const [authErr, setAuthErr] = useState('');
  useEffect(() => auth().onAuthStateChanged((user) => setUser(user)), []);
  onGoogleSignOut = async () => await auth().signOut()
  getAuthErrorSnip = () => authErr ? <Text>{JSON.stringify(authErr)}</Text> : null
  onGoogleSignIn = async () => {
    try {
      const user = await GoogleSignin.signIn();
      await auth().signInWithCredential(auth.GoogleAuthProvider.credential(user.idToken));
    } catch (error) {
      setAuthErr(error);
    }
  }
  return (
    <SafeAreaView>
      <ScrollView contentInsetAdjustmentBehavior="automatic" style={styles.scrollView}>
        <View style={styles.body}>
          <View style={styles.sectionContainer}>
            <GoogleSigninButton onPress={onGoogleSignIn} ></GoogleSigninButton>
            {getAuthErrorSnip()}
          </View>
        </View>
      </ScrollView>
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  scrollView: {
    backgroundColor: Colors.lighter,
  },
  body: {
    backgroundColor: Colors.white,
  },
  sectionContainer: {
    marginTop: 32,
    paddingHorizontal: 24,
  }
});

export default App;

สิ่งที่ฉันเห็นเมื่อฉันทำreact-native run-androidและคลิกที่Sign in:

คำตอบ

1 DipenShah Oct 03 2020 at 05:41

ส่วนใหญ่เป็นข้อผิดพลาดที่เกี่ยวข้องกับการกำหนดค่า client_id หรือ SHA-1 ของคุณโปรดดูปัญหานี้ใน github ที่เกี่ยวข้องกับข้อผิดพลาดเดียวกัน

จากการดูภาพหน้าจอและรหัสที่คุณแชร์ดูเหมือนว่าคุณกำลังใช้ client_id ผิดสำหรับGoogle Web Clientฉันเชื่อว่าคุณควรใช้

client_id ด้วย client_type : 3

แทน

client_id ด้วย client_type : 1

ดังนั้นลองแก้ไขclient_idในapp.jsไฟล์ของคุณและควรใช้งานได้