Android faceBook KeyHash生成(生成发布密钥散列)(转,有改动)

第一种方法 直接代码输出 不用修改

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);  
          //KeyHash 就是你要的,不用改任何代码  复制粘贴 ;
    }  
}  
catch (PackageManager.NameNotFoundException e) {    
      
}  
catch (NoSuchAlgorithmException e) {    
      

}  

第二种方法手动操作生成;

1、去https://code.google.com/p/openssl-for-windows/downloads/list下载OpenSSL工具

2、在c盘根目录下新建一个openssl的文件夹(C:\openssl),并将OpenSSL压缩包解压到此文件夹中

3、cmd 路径设置到jdk的bin路径下执行:

keytool -exportcert -alias aliasName -keystore path_to_name.keystore -file out_put_path.txt

其中path_to_name.keystore是你.keystore文件的路径,out_put_path.txt是生成文件的路径。

4、 打开CMD,路径设置到openssl文件夹下的bin目录(C:\openssl\bin)执行以下代码:

openssl sha1 -binary debug.txt >debug_sha.txt

执行完后在 C盘的openssl文件夹下生成了debug_sha.txt文件

5、继续执行以下代码:

openssl base64 -in debug_sha.txt >debug_base64.txt

执行完后在C盘的openssl文件夹下生成了debug_base64.txt文件

6、打开debug_base64.txt可得到KeyHash

原文件地址

什么是OAuth

所谓OAuth就是说,第三方的应用可以通过你的授权而不用知道你的帐号密码能够访问你在某网站的你自己的数据或功能。像Google, Facebook, Twitter等网站都提供了OAuth服务,提供OAuth服务的网站一般都有很多开放的API,第三方应用会调用这些API来开发他们的应用以让用户拥有更多的功能,但是,当用户在使用这些第三方应用的时候,这些第三方的应用会来访问用户的帐户内的功能和数据,所以,当第三应用要干这些事的时候,我们不能让第三方应用弹出一个对话框来问用户要他的帐号密码,不然第三方的应用就把用户的密码给获取了,所以,OAuth协议会跳转到一个页面,让用户授权给这个第三方应用以某些权限,然后,这个权限授权的记录保存在Google/Facebook/Twitter上,并向第三方应用返回一个授权token,于是第三方的应用通过这个token来操作某用户帐号的功能和数据时,就畅通无阻了。下图简单地说明了Twitter的OAuth的授权过程。

还需要注意的是,因为OAuth是需要跳到主站的网页上去让用户授权,当用户授权完后,需要跳转回原网页,所以,一般来说,OAuth授权页都会带一个 redirect_url的参数,用于指定跳转回原来的网页。Github使用的这个跳转参数是redirect_uri参数。一般来说,redirect_uri这个参数需要在服务器端进行验证。

你想一下,如果有人可以控制这个redirect_uri这个参数,那么,你就可以让其跳转到别的网页上(可能会是个有恶意的网页)。如果你觉得跳转到别的网页上也无所谓,那么你就错了。别忘了,当你对这个第三方的应用授权通过后,服务方会给第三方应用返回一个授权token,这个token会被加到那个redirect_uri参数后面然后跳转回去,如果这个redirect_uri被别有用心的人改一个恶意的网址后,这个token也就被转过去了,于是授权token也就被泄漏过去了。