最近上架Google应用由于启用了Google sign导致从Google上下载的应用无法登录Facebook,
并且无法移除Google sign。
问题原因是:上传到Google后台的应用被Google重新签名名了,这样就导致Facebook等其他方式需要验证签名的三方校验无法正常运行,
而facebook 获取 keyhash 官方给出了两个方法:
解决办法1:
1. 登录谷歌商店进入应用、版本管理、应用签名、下载应用签名证书deployment_cert.der
2. keytool -import -file deployment_cert.der -keystore deployment_cert.jks 这样可以生成Google的签名文件 deployment_cert.jks
3. keytool -exportcert -keystore deployment_cert.jks | openssl sha1 -binary | openssl base64
4. 添加到到Facebook的秘钥散列中,保存更改。格式:isrFio98zGTcOgP2ASDOadOuMOA=
5. Facebook登录ok。
解决办法2:
private void facebookHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}