在没有 "eject" 项目的情况下,在 expo (create-react-native-app) 中使用 Firebase google 身份验证的任何方式

Any way to use Firebase google authentication in expo (create-react-native-app) without "eject" project

作为问题,对于在 firebase 中使用 google 登录需要设置 google-service 但如果您使用 create-react-native-app 创建新的 react-native 项目,则不会"android" 或 "ios" 文件夹(接受使用 "eject")所以,有人对我有建议吗? 但是我也不知道如何在我的项目中设置 google-service(甚至我 "eject" 项目)。

无需对 android 或 ios 文件夹进行任何更改即可支持 Google 在使用 Expo 构建的应用程序上使用 firebase 登录。

  1. 关注the guide for configuring Google auth on the Expo docs
  2. 使用 Expo 的 Using Firebase guide 中描述的方法,其中描述了如何使用 Facebook 进行身份验证,并在需要时换出 Google。

@brentvatne 的回答有点过时了。这是我在 Expo v27

上使用它的方法

重要一点:您可以使用 these instructions.

获取您的客户 ID

只需 select 您在 google 页面的项目下拉列表中的 firebase 应用。

const _loginWithGoogle = async function() {
  try {
    const result = await Expo.Google.logInAsync({
      androidClientId:"YOUR_ANDROID_CLIENT_ID",
      iosClientId:"YOUR_iOS_CLIENT_ID",
      scopes: ["profile", "email"]
    });

    if (result.type === "success") {
      const { idToken, accessToken } = result;
      const credential = firebase.auth.GoogleAuthProvider.credential(idToken, accessToken);
      firebase
        .auth()
        .signInAndRetrieveDataWithCredential(credential)
        .then(res => {
          // user res, create your user, do whatever you want
        })
        .catch(error => {
          console.log("firebase cred err:", error);
        });
    } else {
      return { cancelled: true };
    }
  } catch (err) {
    console.log("err:", err);
  }
};