我正在创建使用Facebook登录SDK的Android应用程序.
我想生成调试密钥哈希.在Facebook网站上,我发现了这个命令:
keytool -exportcert -alias androIDdeBUGkey -keystore
%HOMEPATH%.androID\deBUG.keystore | openssl sha1 -binary | openssl
base64
我修改了此命令以在我的计算机上工作:
keytool -exportcert -alias androIDdeBUGkey -keystore
C:\Users\redio\.androID\deBUG.keystore | “C:\OpenSSL\bin\openssl” sha1
-binary |”C:\OpenSSL\bin\openssl” base64
接下来我输入密码:androID
此命令生成此哈希:QUhvjKstiP5gc7hPEzwF89mwHws =
然后我将它粘贴在facebook开发者控制台中
和Facebook仍然说密钥哈希是无效的.我知道我可以从警告消息中复制密钥哈希,并将其粘贴到Facebook开发人员控制台中.但我的问题是为什么keytool生成错误的密钥哈希?
解决方法:
我也有很多问题让keytool生成一个有效的哈希,但我实现了我找到的下面的方法,并能够注销一个有效的哈希.代码的确切来源有点不清楚,但this blog post是一个很好的猜测.
public static String printKeyHash(Activity context) { PackageInfo packageInfo; String key = null; try { //getting application package name, as defined in manifest String packagename = context.getApplicationContext().getPackagename(); //Retriving package info packageInfo = context.getPackageManager().getPackageInfo(packagename, PackageManager.GET_SIGNATURES); Log.e("Package name=", context.getApplicationContext().getPackagename()); for (Signature signature : packageInfo.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); key = new String(Base64.encode(md.digest(), 0)); // String key = new String(Base64.encodeBytes(md.digest())); Log.e("Key Hash=", key); } } catch (PackageManager.nameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("No such an algorithm", e.toString()); } catch (Exception e) { Log.e("Exception", e.toString()); } return key;}
总结 以上是内存溢出为你收集整理的为什么keytool生成不同的facebook androiddebugkey哈希?全部内容,希望文章能够帮你解决为什么keytool生成不同的facebook androiddebugkey哈希?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)