vCh*_*mps 8 android facebook android-facebook
在我的Android应用程序中,我使用facebook登录.这是我第一次使用它.
登录功能在发布apk文件中正常工作.另外,我使用keytool,openssl生成了密钥哈希: -
keytool -exportcert -alias "MyAppAlias" -keystore "Path to keystore" |
openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
我在Facebook开发者帐户的App设置中添加了生成的密钥哈希.现在,当我生成签名apk时,Facebook登录工作正常,但在Play商店发布相同的apk后,Facebook登录无法正常工作,它只是重定向到活动的地方(我的应用程序的登录活动)没有任何崩溃或没有回应的消息.
谢谢.
vCh*_*mps 32
最后,我解决了这个问题.
这个问题背后的原因在 发布应用程序到商店时,我从Google Play进行了APP SIGNING,因此在那里创建了新的SHA-1密钥.
要查看此密钥,请转到Google Play控制台,选择您的应用,然后选择发布管理 - >应用签名
在此页面上,我在"应用程序签名证书"部分下获得了新的SHA-1密钥
因此,关键是Google Play Signing会创建一个新证书,如上图所示.
在Facebook开发者帐户中,我们需要添加由密钥库生成的密钥哈希值.但在这种情况下,我们还需要添加Key hash对应这个APP SIGNING证书.现在的问题是,如何获得此证书/ SHA-1指纹的密钥哈希?
如何从Google Play APP SIGNING的SHA-1键创建Key Hash?
要从SHA-1密钥生成密钥哈希,请执行一个小型Java程序,
// GOOGLE PLAY APP SIGNING SHA-1 KEY:- 65:5D:66:A1:C9:31:85:AB:92:C6:A2:60:87:5B:1A:DA:45:6E:97:EA
byte[] sha1 = {
0x65, 0x5D, 0x66, (byte)0xA1, (byte)0xC9, 0x31, 0x85, (byte)0xAB, (byte)0x92, (byte)0xC6, (byte)0xA2, 0x60, 0x87, 0x5B, 0x1A, (byte)0xDA, 0x45, 0x6E, (byte)0x97, (byte)0xEA
};
System.out.println("keyhashGooglePlaySignIn:"+ Base64.encodeToString(sha1, Base64.NO_WRAP));
Run Code Online (Sandbox Code Playgroud)
输出: -
keyhashGooglePlaySignIn: ZV1dkSgxvc2p4aCtFx9tcaQr8N4=
Run Code Online (Sandbox Code Playgroud)
复制此密钥哈希并将其粘贴到您的应用程序的Facebook开发人员帐户设置.这就是我的问题得到解决的方法.
感谢所有开发者的评论.:)
我改进了@vChamps 的回答。只需将 SHA1 字符串传递给下面的函数
public void hashFromSHA1(String sha1) {
String[] arr = sha1.split(":");
byte[] byteArr = new byte[arr.length];
for (int i = 0; i< arr.length; i++) {
byteArr[i] = Integer.decode("0x" + arr[i]).byteValue();
}
Log.e("hash : ", Base64.encodeToString(byteArr, Base64.NO_WRAP));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5316 次 |
| 最近记录: |