如何使用android中的Keytool为W7 32位生成Keyhash(Facebook)
我试图生成Keyhash,以便在我们的应用程序中集成Facebook,但当我通过cmd提示符生成Keyhash时,它无法生成如何使用android中的Keytool为W7 32位生成Keyhash(Facebook),android,facebook,Android,Facebook,我试图生成Keyhash,以便在我们的应用程序中集成Facebook,但当我通过cmd提示符生成Keyhash时,它无法生成 C:\Users\DON\.android>keytool -exportcert -alias androiddebugkey -keystore ~/.an droid/debug.keystore | openssl sha1 -binary | openssl base64 “keytool”未被识别为内部或外部命令, 可操作的程序或批处理文件 我
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”未被识别为内部或外部命令,
可操作的程序或批处理文件
有什么问题吗?使用此命令首先下载此文件。然后提取文件并运行以下命令:
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是我的系统名,应替换为您的系统名。
/bin
这是迟来的答复,但对像我这样懒惰的人会有帮助。。将此代码添加到应用程序类中,无需下载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>
首先安装Facebook sdk,然后安装主程序。如果您添加此程序,您将在控制台获得keyhash
有可能会有3个类型的密钥,一个是调试密钥,另一个是发布密钥,在上传google changes签名后,您可以将所有这3个密钥提供给facebook开发者帐户,然后您可以检查facebook登录。根据你的应用模式,facebook将匹配密钥。如果你不知道android studio中的android monitor,请使用toast查看密钥哈希
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);
}
}
}从下载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.
首先在s/m中搜索keytool应用程序,导航到该目录并使用命令Sir@droidhot我无法理解,请注意,如果“keytool”未被识别为内部或外部命令,则表明C:\Users\DON.android>不包含keytool。exe@droidhot ,先生,如何在我们的.android folderReference qtn中获取这个keytool.exe,以防它显示:未知选项“-xtlm301********=”。它的工作原理是在最后替换为base64。keytool-export-alias myAlias-keystore C:\DON\.android\myKeyStore | C:\openssl\bin\openssl sha1-binary | C:\openssl\bin\openssl base64@Rishi Gautam--谢谢!!救了我一天。hi Mushtaq,你能告诉我如何编辑路径吗。我是斯塔克。请帮助meHi@androidenthusist您可以按照此设置路径变量,感谢您的响应。我稍后会试试这个。对不起,穆斯塔克,我在候机楼不太好:D@AndroidEnthusiast嘿,不需要道歉,希望这有帮助