在没有 "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 登录。
- 关注the guide for configuring Google auth on the Expo docs
- 使用 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);
}
};
作为问题,对于在 firebase 中使用 google 登录需要设置 google-service 但如果您使用 create-react-native-app 创建新的 react-native 项目,则不会"android" 或 "ios" 文件夹(接受使用 "eject")所以,有人对我有建议吗? 但是我也不知道如何在我的项目中设置 google-service(甚至我 "eject" 项目)。
无需对 android 或 ios 文件夹进行任何更改即可支持 Google 在使用 Expo 构建的应用程序上使用 firebase 登录。
- 关注the guide for configuring Google auth on the Expo docs
- 使用 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);
}
};