无法使用React Native和Firebase进行Google OAuth身份验证

时间:2016-03-08 20:49:24

标签: android firebase react-native google-oauth firebase-authentication

我正在尝试让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包中的idTokenserverAuthCode字段的所有组合,但所有内容都以相同的错误结束。有没有人让这个工作正常?

1 个答案:

答案 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