pcj*_*pcj 9 android google-signin
我正在通过以下线程在我的android应用程序中集成gmail登录:
https://developers.google.com/identity/sign-in/android/sign-in?configured=true
但我得到的错误是:
状态{statusCode = DEVELOPER_ERROR,resolution = null}
我在这里查看了这个状态代码文档:
以上链接无助于诊断问题,
我已经创建了调试密钥库文件,并使用keytool生成了SHA-1,同样在Google开发人员控制台中,我添加了包名称,因为它位于清单文件或gradle文件中.
但是所有人似乎都失败了,任何人都可以告诉我这个错误代码表明什么可能出错?
pcj*_*pcj 19
问题是SHA1不匹配,
1]第一个密钥库文件:我解决了错误,问题是在构建apk Android工作室时采用了位于里面的默认密钥库文件C:\Users\<LOGGED_IN_USER_NAME>\.android\debug.keystore
2]第二个密钥库文件:我还创建了另一个位于不同目录的密钥库文件,即app/keystore/debug.keystore
在配置谷歌开发者控制台以在应用程序内集成gmail登录时,我通过上面的第二个密钥库文件生成了sha-1密钥,工作室在构建带有其他密钥库文件的apk文件时因此发生了sha-1密钥不匹配.
为了获取我的密钥库文件, app/keystore/debug.keystore我在应用程序级别配置了gradle文件,代码如下:
signingConfigs {
debug {
storeFile file('keystore/debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
/*
release {
storeFile file('release.keystore')
storePassword "mystorepassword"
keyAlias "mykeyalias"
keyPassword "mykeypassword"
}
*/
Run Code Online (Sandbox Code Playgroud)
现在生成的apk sha-1签名与google开发者控制台上为您的应用配置的sha-1键匹配.
注意:始终使用debug.keystore来调试gmail集成(在开发时).
参考:
对于Gmail集成:https: //developers.google.com/identity/sign-in/android/start-integrating
要查看哪个sha-1正在用于您的应用程序,请参阅此stackoverflow线程: 密钥库证书的SHA-1指纹
对于使用React Native Google Signin和Firebase的任何人,请尝试此操作。
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Run Code Online (Sandbox Code Playgroud)
密码是android。复制SHA-1值,在输出中将类似于以下内容:
Certificate Fingerprints
....
SHA1: aa:bb:cc:dd:ee:ff:11:22:33:44:47:D0:9E:8D:E0:0C:79:F1:0F:CB
Run Code Online (Sandbox Code Playgroud)
现在,在Firebase控制台中打开您的Android应用并添加SHA-1:
对于本机应用程序谷歌登录的反应,我按照以下步骤操作并且它有效
GoogleSignin.configure({
iosClientId: Constants.GOOGLE_LOGIN_CLIENT_ID_IOS,
webClientId: Constants.GOOGLE_WEB_CLIENT_ID,
offlineAccess: false
});Run Code Online (Sandbox Code Playgroud)
或者你可以像这样创建一个单独的方法并在componentDidMount 中调用它来配置 GoogleSignIn
async setupGoogleSignin() {
try {
await GoogleSignin.hasPlayServices//({ autoResolve: true });
await GoogleSignin.configure({
iosClientId: Constants.GOOGLE_LOGIN_CLIENT_ID_IOS,
webClientId: Constants.GOOGLE_WEB_CLIENT_ID,
offlineAccess: true
});
const user = await GoogleSignin.currentUserAsync();
console.log("user from google sin in", user);
} catch (err) {
console.log("Google signin error", err.code, err.message);
}
}Run Code Online (Sandbox Code Playgroud)
配置 GoogleSignIn 后,您可以在按下 GoogleSignInButton 时调用以下方法
googleAuth() {
GoogleSignin.signIn()
.then(user => {
console.log("user==", user);
console.log("user name = ", user.user.email);
console.log("accessTOken = ", user.accessToken);
this.props.socialMediaLogin( // this is my method that I call on successful authentication
user.user.id,
user.user.name,
user.user.givenName,
user.user.familyName,
user.user.email,
user.user.photo,
"GOOGLE",
user.accessToken
);
})
.catch(err => {
console.log("WRONG SIGNIN", err);
})
.done();
}Run Code Online (Sandbox Code Playgroud)
小智 5
在与此问题斗争了近 6 个小时后,我刚刚解锁了自己,这是我的发现。
请确保以下事项:
Google Developer 控制台中的正确包名称。(不要只使用 AndroidManifest.xml 中的包名称。检查 Gradle 文件以查看您的风味名称在构建时是否动态更改)。
在正确的密钥库位置生成 Sha-1 哈希值。(我本来打算使用默认密钥库位置 ~/.android/debug.keystore,但发现我的应用程序被存储库中的另一个位置覆盖,因此,我一直收到developer_error。)
PS:如果您的应用程序使用后端服务器离线提取数据,请从 Google 登录流程创建项目,因为这将为 Android 和 Web 服务器生成 OAuth 客户端 ID。
对于 Windows
对于 Windows 使用这个 keytool -exportcert -list -v -alias androiddebugkey -keystore C:\Users[YOUR WINDOWS USER NAME].android\debug.keystore
像这样
keytool -exportcert -list -v -alias androiddebugkey -keystore "你的 debug.keystore" 路径
keytool -exportcert -list -v -alias androiddebugkey -keystore C:\Users\keshav.gera.android\debug.keystore
keytool -exportcert -list -v -alias androiddebugkey -keystore E:\HNSetup2\healthnickel\HealthNickel\android\app\debug.keystore
密码是:- android
把你的 SHA1 放在Firebase 控制台上
注意 ===> 更新您的应用文件夹中的 google-service.json 文件 请更新
| 归档时间: |
|
| 查看次数: |
23086 次 |
| 最近记录: |