我正在尝试让Google OAuth使用Firebase和React Native,但似乎无法让所有内容协同工作。我正在使用NPM软件包react-native-google-signin来处理Google OAuth方面的事情,并且正在按预期工作。我遇到了一个让用户通过Firebase进行身份验证的问题。
我已根据网络指南中的说明在我的Firebase实例上启用了Google身份验证。但是,当我尝试使用原生OAuth包中的idToken
字段进行身份验证时,我始终会从Firebase收到INVALID_CREDENTIALS
错误。我使用的是Firebase Web API中的authWithOAuthToken方法。
我想我已经尝试过使用Firebase配置的Web / Android客户端ID以及OAuth包中的idToken
和serverAuthCode
字段的所有组合,但所有内容都以相同的错误结束。有没有人让这个工作正常?
答案 0 :(得分:2)
这就是我为我的应用做的:
import {GoogleSignin} from 'react-native-google-signin';
const KEYS = {
// ... // ios and web keys (i'm loading them from my server)
}
login() {
GoogleSignin.hasPlayServices({ autoResolve: true })
.then(() => {
GoogleSignin.configure(KEYS)
.then(() => {
GoogleSignin.signIn()
.then(this.onGoogleLoginSuccess)
.catch(error=>{})
.done();
});
})
.catch((err) => {
console.log("Play services error", err.code, err.message);
})
}
onGoogleLoginSuccess(user) {
var token = user.idToken;
var provider = firebase.auth.GoogleAuthProvider;
var credential = provider.credential(token);
firebase.auth().signInWithCredential(credential)
.then((data)=>console.log('SUCCESS', data))
.catch((error)=>console.log('ERROR', error));
}
重点是使用signInWithCredential()
方法。参考:https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential