我尝试生成用于在我们的应用中集成Facebook的Keyhash,但是当我通过cmd提示生成keyhash时,它无法生成。
C:\Users\DON\.android>keytool -exportcert -alias androiddebugkey -keystore ~/.an
droid/debug.keystore | openssl sha1 -binary | openssl base64
'keytool'未被识别为内部或外部命令, 可操作程序或批处理文件。
我使用的另一个命令是:
C:\Program Files\Java\jdk1.6.0_20\bin>keytool -exportcert -alias androiddebugkey
-keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
'openssl'未被识别为内部或外部命令, 可操作程序或批处理文件。
有什么问题?
答案 0 :(得分:12)
使用此命令首先下载此文件http://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip。然后解压缩文件并运行以下命令:
C:\Program Files\Java\jdk1.6.0_20\bin>keytool -export -alias myAlias -keystore C:\Users\DON\.android\myKeyStore | C:\openssl\bin\openssl sha1 -binary | C:\openssl\bin\openssl enc -a -xtIm30l*********=
DON是我的系统名称,应替换为您的系统名称。
答案 1 :(得分:9)
<openssl-extracted-folder>/bin
答案 2 :(得分:4)
首先做Facebook sdk设置然后主程序,如果你添加它,你将在控制台获得keyhash
一旦调试将有3种类型键的机会,另一种是释放键,上传谷歌更改签名后,您可以将这3个键提供给Facebook开发者帐户,然后您可以查看Facebook登录。取决于你的应用程序模式facebook将匹配key.Use toast看到keyhash,如果你不知道Android工作室的android监视器
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
printKeyHash();
}
private void printKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("jk", "Exception(NameNotFoundException) : " + e);
} catch (NoSuchAlgorithmException e) {
Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
}
}
}
答案 3 :(得分:2)
它的答案很晚但是它会对像我这样的懒人有所帮助..将此代码添加到您的Application类中,无需下载openssl而无需设置路径..只需要只是复制我的代码..和keyHash将在日志中生成。
import com.facebook.FacebookSdk;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
printKeyHash();
}
private void printKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("jk", "Exception(NameNotFoundException) : " + e);
} catch (NoSuchAlgorithmException e) {
Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
}
}
}
并且不要忘记在清单中添加MyApplication类:
<application
android:name=".application.MyApplication"
</application>
答案 4 :(得分:0)
从https://code.google.com/archive/p/openssl-for-windows/downloads下载openssl。
提取文件,然后在CMD中执行,重新添加路由和键名
keytool -exportcert -alias KEYNAME -keystore "C:\Users\YOUR_USER\.android\debug.keystore"
| "C:\URL_OPENSSL_EXTRACTED\bin\openssl" sha1 -binary
| "C:\URL_OPENSSL_EXTRACTED\bin\openssl" base64.