我一直在尝试将社交登录集成到我的react本机项目中,在该项目中我能够成功进行Facebook登录,但是无法登录到google。 react-native-google-signin 库用于google。
我使用的代码。
componentDidMount() {
GoogleSignin.hasPlayServices({ autoResolve: true }).then(() => {
// play services are available. can now configure library
}).catch((err) => {
console.log("Play services error", err.code, err.message);
})
GoogleSignin.configure({
scopes: ["https://www.googleapis.com/auth/drive.readonly"], // what API you want to access on behalf of the user, default is email and profile
// iosClientId: <FROM DEVELOPER CONSOLE>, // only for iOS
webClientId: "xxx", // client ID of type WEB for your server (needed to verify user ID and offline access)
// offlineAccess: true // if you want to access Google API on behalf of the user FROM YOUR SERVER
//hostedDomain: '' // specifies a hosted domain restriction
//forceConsentPrompt: true // [Android] if you want to show the authorization prompt at each login
//accountName: '' // [Android] specifies an account name on the device that should be used
})
.then(() => {
// you can now call currentUserAsync()
});
_signIn = async () => {
try {
await GoogleSignin.hasPlayServices(
)
const userInfo = await GoogleSignin.signIn();
console.log('User Info --> ', userInfo);
this.setState({ userInfo });
} catch (error) {
console.log('Message', error.message);
if (error.code === statusCodes.SIGN_IN_CANCELLED) {
console.log('User Cancelled the Login Flow');
} else if (error.code === statusCodes.IN_PROGRESS) {
console.log('Signing In');
} else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
console.log('Play Services Not Available or Outdated');
} else {
console.log('Some Other Error Happened');
}
}
};
错误响应:
Message: A non-recoverable sign in failure occurred -catch error
答案 0 :(得分:2)
在android文件夹中运行gradlew signingReport
并检查列出的所有 sha1 ,如果您使用的是Firebase,请确保在以下位置找到所有不同的 sha1 列表已添加到firebase项目中,然后下载google-services.json,再次将其替换为您项目中的旧版本,然后运行cd android && gradlew clean
并再次构建项目
答案 1 :(得分:1)
那是由于clientId。 在google developer控制台中,当您为webClientID配置项目时,与其创建一个新项目,不如选择一个现有项目,即先创建该项目,然后再选择它来创建凭据。
对我有用。
并开始登录配置
GoogleSignin.hasPlayServices({ autoResolve: true }).then(() => {
})
.catch((err) => {
console.log("Play services error", err.code, err.message);
})
GoogleSignin.configure({
scopes: ["https://www.googleapis.com/auth/userinfo.profile"],//scopes as you need
webClientId: "***(Your clientId)",
//iosClientId: <FROM DEVELOPER CONSOLE>, // only for iOS
//offlineAccess: true, //(give it true if you need serverAuthCode i.e cross client authorisation)
//hostedDomain: ''
//forceConsentPrompt: true // [Android] if you want to show the authorization prompt at each login
//accountName: ''
})
答案 2 :(得分:1)
此修复程序还可以帮助您
尝试立即登录,它应该可以工作。
答案 3 :(得分:1)
就我而言,我已经使用了测试应用程序的软件包名称(例如com.loginTest)。使我的包裹名称唯一后,我就可以解决此问题!
答案 4 :(得分:1)
关注here
答案 5 :(得分:0)
我搜索并遇到了以下步骤
- 在
https://console.developers.google.com
上启用OAuth- 启用时复制并粘贴SH1
- 启用Google登录Firebase身份验证
- 使用Oauth Client_Id代替您的WebClient ID
答案 6 :(得分:0)
我知道,我回答这个问题很晚了。我只是遇到了同样的问题,花了将近4-5个小时来解决这个问题。 我发现的解决方案: “在Firebase上添加支持电子邮件后,它开始工作” 我认为这不是应用程序或配置问题。可能是应报告的Firebase问题,而文档中却没有任何地方。
答案 7 :(得分:0)
您需要添加support email
。
为此,请转到:-
答案 8 :(得分:0)
在 firebase 中添加支持电子邮件,它将开始工作