做Facebook登录的时候,在Facebook开发者控制台那里要求填如APP的28位HashKey,在facebook新手教程那里有教我们怎么获取,一种是使用OPSSL,反正我没弄出来。另外一种,看样子是使用facebook的SDK自带的获取hash值的方法,因为我是使用cordova打包,所以没去尝试。网上搜索获取这个hashKey的答案很多,感觉大部分都是复制粘贴facebook新手教程的一句话就完事的,也有一些教了怎么使用OPENSSL,但是很麻烦,我也没能弄出来。最后使用了最简单的方法,那就是使用代码来获取,代码很简单,是从别处找到的,如下:
try {
int i = 0;
PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
i++;
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
这时候为了能获取到正式包的hashKey,又得满世界去寻找怎么获取对应的keyStore的hashKey了,心塞应。等等,如果是这样,那么我给打好包的APP也加上这么一段获取hashKey的代码,然后在程序运行的时候执行一下,再把那个获取到的hashKey弹个土司看看或者放到文件里导出来看看,然后对比打正式包前后获取到的hashKey是否一样,如果不一样,那么,是不是就获取到正式包的正确的hashKey了?是的,是的,是的,重要的事情说三遍!这样做是能获取到正式包的正确的28位hashKey了!
使用eclipse的同学可以不用往下看了。使用android studio的同学,建议你往下看看,还有更方便快捷、不容易引起误会的办法。
如果你是使用android studio进行开发,你可以把你的debug模式的keyStore和release模式的keyStore设置成一样,也就是都设置成你自己生成的,用于APK发布的keyStore。操作步骤很简单,我懒得自己弄图了,请移步大神博客:http://blog.csdn.net/nimasike/article/details/51457229,可以通过下方的“点击打开链接”直接到达。我是从他学习到的。
点击打开链接
谢谢观看到这里,不好意思,我有点太罗嗦了!