8

作为问题,在 firebase 中使用 google 登录需要设置 google-service 但如果您使用 create-react-native-app 创建新的 react-native 项目,则将没有“android”或“ios”文件夹(接受使用“eject ") 那么,有人对我有什么建议吗?但是我也不知道如何在我的项目中设置 google-service(即使我“弹出”项目)。

4

2 回答 2

20

@brentvatne 的回答有点过时了。这是我在 Expo v27 上的工作方式

重要一点:您可以使用这些说明获取您的客户 ID 。

只需从 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);
  }
};
于 2018-05-17T19:20:27.520 回答
4

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

  1. 按照Expo 文档中配置 Google 身份验证的指南进行操作
  2. 使用 Expo 的Using Firebase guide中描述的方法,其中描述了如何使用 Facebook 进行身份验证,并在需要时更换 Google。
于 2017-06-18T18:43:20.983 回答