React-native google auth cho android DEVELOPER_ERROR Mã 10

Sep 28 2020

Tôi đã làm gì:

react-native init testAuthGoogle && cd testAuthGoogle && (cd android; ./gradlew signingReport) để tạo một dự án mới và hiển thị 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

Đã sao chép SHA1 vào firebase và tạo ứng dụng android

Đã tải google-services.jsontệp xuốngandroid/app/google-services.json

Trong android/build.gradle:

  • Đã thêm phụ thuộc: classpath("com.google.gms:google-services:4.3.3")

Trong android/app/build.gradle:

  • Áp dụng plugin: apply plugin: "com.google.gms.google-services"
  • Đã thêm các phần phụ thuộc implementation 'com.google.firebase:firebase-analytics:17.5.0'vàimplementation 'com.google.firebase:firebase-auth:19.4.0'

Đã cài đặt các phần phụ thuộc khác:

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

Đã sao chép client_idtừ google-services.jsontệp để sử dụng nó trong app.js.

Thay đổi mã trong 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;

Những gì tôi thấy khi tôi làm react-native run-androidvà nhấp vào Sign in:

Trả lời

1 DipenShah Oct 03 2020 at 05:41

Nhiều khả năng đó là lỗi liên quan đến cấu hình client_id hoặc SHA-1 của bạn, hãy kiểm tra vấn đề này trên github có liên quan đến lỗi tương tự.

Bằng cách nhìn vào ảnh chụp màn hình và mã bạn đã chia sẻ, có vẻ như tôi đang sử dụng sai client_id, đối với ứng dụng khách web của google , tôi tin rằng bạn nên sử dụng

client_id với client_type : 3

thay vì

client_id với client_type : 1

vì vậy hãy thử sửa lỗi client_idtrong app.jstệp của bạn và nó sẽ hoạt động.