我想在我的应用程序中添加带有Facebook按钮的登录。所以我试着按照这个指南。
Getting Started with the Facebook SDK for Android
我试图获取Android密钥哈希。但我无法在我的PC cmd上运行它。
这是我试过的代码。
我将我的主路径添加到此%HOMEPATH%
。
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
但它显示出这样的错误。
任何人都可以帮我修复此错误。
答案 0 :(得分:2)
首先从此a link
下载openssl第二次将其解压缩到本地磁盘C:将其命名为openssl,即文件夹名称
第三个在环境变量中设置它。程序如下
右键单击我的电脑 - >属性 - >高级 - >环境变量 在系统变量下 - >单击路径并单击编辑
现在插入';'分号并粘贴文件夹openssl的路径。好的。
现在你可以看到openssl在cmd中被识别为命令。
让KeyHash执行以下cmd
keytool -exportcert -alias androiddebugkey -keystore "path of ur debug.keystore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64
警告的解决方案---
WARNING: can't open config file: C:/OpenSSL/openssl.cnf
WARNING: can't open config file: C:/OpenSSL/openssl.cnf
openssl:Error: 'base' is an invalid command.
首先在环境变量中添加以下行,类似于第三步。
设置OPENSSL_CONF=c:\openssl\bin\openssl.cfg
现在在cmd以上运行
keytool -exportcert -alias androiddebugkey -keystore "path of ur debug.keystore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64
你收到警告,但是在cmd ...
中返回了keyHash答案 1 :(得分:0)
使用以下代码在日志中打印哈希键
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PrintHashKeyInLog();
}
public void PrintHashKeyInLog() {
PackageInfo info;
try {
info = getPackageManager().getPackageInfo(
"Your package name",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0)); // String
something = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", something);
}
} catch (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());
}
}