Так вот мой код и то, что я пробовал до сих пор.
- Я установил этот пакет в свое реактивное приложение.
- Сгенерировал SHA-1 и вставил в мое приложение Firebase.
- Также создал webclientId из облачной консоли. (Потому что я запутался, какой идентификатор веб-клиента вставлять в GoogleSignin.Configure).
Мой код:
import React from 'react';
import * as firebase from "firebase";
import 'firebase/firestore';
import { GoogleSignin, GoogleSigninButton, statusCodes } from 'react-native-google-signin';
class App extends React.Component {
constructor(props) {
super(props)
this.state = {homePage : false}
this.btnClick = this.btnClick.bind(this)
}
async btnClick() {
// Navigate to the HelloWorld view
//this.props.navigation.navigate('Login')
try {
// Add any configuration settings here:
await GoogleSignin.configure({
androidClientId:"my-client-id-from-console-google.apps.googleusercontent.com",
});
const data = await GoogleSignin.signIn();
console.log(data)
const currentUserData = GoogleSignin.getTokens().then((res)=>{
var accessToken = res.accessToken;
console.log(res)
});
const credential = firebase.auth.GoogleAuthProvider.credential(data.idToken, currentUserData.accessToken)
// login with credential
const currentUser = await firebase.auth().signInWithCredential(credential);
console.info(JSON.stringify(currentUser.toJSON()));
} catch (e) {
console.error(e);
}
}
return (
<>
<StatusBar barStyle="dark-content" />
<SafeAreaView style = {styles.container}>
<GoogleSigninButton
style={{ width: 192, height: 48 }}
size={GoogleSigninButton.Size.Wide}
color={GoogleSigninButton.Color.Dark}
onPress={this.btnClick}
disabled={this.state.isSigninInProgress} />
</>
)
Возвращает idToken как ноль, поэтому следующий вызов для firebase.auth().GoogleAuthProvider
возвращает ошибку.