[英]keytool with Android Facebook SDK
我只想要一些確認。
我正在開發Windows
我正在嘗試將facebook集成到應用程序中,SDK文檔說我需要'導出簽名'
從這里: http : //developers.facebook.com/docs/guides/mobile/#android
所以它說運行這個命令:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
首先我必須下載openssl: OpenSSL
現在上面的命令,我假設應該轉換為:
"C:\path\to\java\keytool" -exportcert -alias your_alias -keystore "C:\path\to\your\keystore\keystore.name" | "C:\path\to\openssl_install\bin\openssl" sha1 -binary |"C:\path\to\openssl_install\bin\openssl" base64
所以一旦我完成了它,它會要求輸入密碼:(它顯示密碼,因為我正在輸入密碼)
如果我輸入正確的密碼,我會得到
'zR2tey1h9kqPRSW / yEYEr0ruswyD ='(公開更改)
但如果我輸入的密碼不正確,它仍然會以一種形式返回給我一個代碼
'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='?
所以,是的,只是在尋找確認我正在做正確的事情,這是預期的輸出
獲取哈希的最佳方法是運行以下代碼:
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 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));
Log.e("hash key", something);
}
}
catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
Log.e("name not found", e1.toString());
}
catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
Log.e("no such an algorithm", e.toString());
}
catch (Exception e){
Log.e("exception", e.toString());
}
當使用windows cmd,git bash或cygwing終端提取哈希時,這三個工具會給出不同的結果。
最准確的是上面的代碼
是的,你是以正確的方式做我認為。我也執行此命令,並將此哈希放在我的fb應用程序中,它的工作正常。
回答你的問題如下:
所以一旦我完成了它,它會要求輸入密碼:(它顯示密碼,因為我正在輸入密碼)
如果我輸入正確的密碼,我會得到
'zR2tey1h9kqPRSW / yEYEr0ruswyD ='(已公開更改)但是如果我輸入的密碼不正確,它仍然會返回一個代碼形式的代碼
'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='? 所以,是的,只是在尋找確認我正在做正確的事情,這是預期的輸出
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
有三個命令將前一個命令的輸出提供給下面的命令。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
openssl sha1 -binary
openssl base64
當給出不正確的密鑰庫密碼時,第一個命令會生成錯誤,但不會顯示錯誤,因為會輸入第二個命令並生成不同的哈希值。 只運行第一個keytool命令( keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
)以確認您的密鑰庫密碼以及它是否正確。 如果密碼不正確,將顯示類似於下面的輸出。
> keytool -exportcert -alias androiddebugkey -keystore
〜/ .android / debug.keystore輸入密鑰庫密碼:
keytool錯誤:java.io.IOException:Keystore被篡改,或密碼不正確
提供android來回答Enter keystore password:
如果生成android debug hash則提示。 android debug keystore的默認密碼是android
命令也可以編寫以捕獲來自keytool命令的錯誤,以查看在運行命令2之前命令1是否返回錯誤。
那么您想要安裝在最新Java安裝文件夾中的keytool嗎?
您希望別名是您在eclipse中用於正常apk創建的別名的名稱嗎?
您希望密鑰庫是導出Android應用程序時使用的密鑰庫嗎?
你想openssl成為你剛剛安裝的那個嗎?
對以上所有問題都是肯定的。 PATH可以設置為不鍵入keytool和openssl的完整路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.