React-native google auth cho android DEVELOPER_ERROR Mã 10
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
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.