署名されたアプリのキーハッシュを見つけます
質問
アプリに署名し、このフォルダーのアプリと呼ばれるデスクトップのフォルダーにエクスポートしました。私のアプリ自体とキーストアです。 Facebook Developersページにコピーできるキーハッシュを見つけるにはどうすればよいですか。私はopenSSLをインストールしましたが、スタックで他の多くのスレッドを試したキーハッシュを生成できないようですが、誰も助けているように見えます、ありがとう
ジェームズ
解決
- キーストアファイルはどこにあるかを知っておく必要があります。私にとってです
C:\Users\Selvin\Desktop\selvin.kp
- キーストアでエイリアスを知っておく必要があります。私にとってです
selvin
- KeyToolへのパスを知っている必要があります。
C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
- OpenSSLへのパスを知っている必要があります。
C:\OpenSSL-Win32\bin\openssl.exe
- キーストアのパスワードを知っている必要があります。私にとっては***** heheです
次に、電話する必要があります。
C:プログラムファイル java jdk1.6.0_22 bin keytool.exe "-exportcert -alias selvin -keystore c: uses selvin desktop selvin.kp | c: openssl -win32 bin openssl sha1 -binary | c: openssl-win32 bin openssl base64
私のパスとエイリアスを適切なパスに置き換えます。
次に、表示されるはずです:
キーストアのパスワードを入力してください:
パスワードを入力すると、次のようなものが得られます。 NfhDlIH7XWJzUZRjL+pZySrMX1Q=
編集: NfgDlIG7XWJzUZRUL+bZySrMX1Q=
< - 悪いハッシュです。またはあなたはとても幸運になり、あなたの鍵は同じ衝突を起こしました
エラー:keytoolエラー:java.lang.exception:エイリアスが存在しません
ハッシュが機能しない場合:
まず、電話してください
c:プログラムファイル java jdk1.6.0_22 bin keytool.exe "-exportcert -alias selvin -keystore c: uses selvin desktop selvin.kp
パスワードを入力して、エラーを読み取ります
エイリアスを覚えていない場合 keytool error: java.lang.Exception: Alias <selvinn> does not exist
セルビンを使用してエラーを示しました。
すべてのエントリ/エイリアスのリストについて:
c:プログラムファイル java jdk1.6.0_22 bin keytool.exe -list -keystore c: uses selvin desktop selvin.kp
2番目の編集
他のヒント
まだ苦労している人にとって、私はこれらの手順が正しく動作することは確かに機能することを発見しましたが、初めて正しいことをするのは非常に挑戦的である可能性があります。 (ハッシュは何らかの理由で切り捨てられます)。これらの指示のほとんどを既に一緒に引っ張るさまざまなバッチファイルを書いたので、そこで問題を除外しません。
ただし、本質的にほとんどの人はOpenSSL段階で倒れます(見つけることができない、使用方法がわからない、またはWindows配管はSHA1エクスポートから出力をBase64変換入力に正しくチェーンしません)。
これを回避するには、おそらくフォローして理解しやすい代替方法を使用できます。基本的に、Facebook APIが望んでいるのは、SHA1ハッシュのBase64表現(エンコード)です。これを行うには、キーストアをリストするだけです。
"C:\Program Files\Java\JRE6\Bin\keytool.exe" -list -v -keystore "Path-to-your-keystore" -storepass "KeystorePassword" > somefile.txt
明らかに、独自のセットアップに従ってKeyTool実行可能ファイルへのパスを変更し、「パスツーキーストア」と「KeyStorePassWord」をキーストアのパスとパスワードに置き換える必要があります。その結果、現在のフォルダーに「somext.txt」というファイルが作成され、テキストエディターで開くことができます。テキストファイルには、すべてのキーストアエイリアスとそれぞれのMD5とSHA1のハッシュをHEX文字列としてリストします。
ここで、APKに署名するために使用されるエイリアスを見つけ、SHA1ハッシュをコピーし、オンラインヘックスを使用してBase64コンバーターを使用して、Facebookが必要とするBase64エンコード形式に変換します。 「オンラインヘックスからBase64コンバーター」をグーグルで検索して、オンラインコンバーターを見つけることができます。私は使用しています これです テキストファイルから入力されたボックスに文字列をコピーして貼り付けるだけで、各ヘックスバイトを分離するコロンを削除するだけです。
1つの最後のポイント(やや明白ですが..)は、SHA1:プレフィックスではなく、ヘックス文字列をコピーして貼り付けます!
これが誰かを助けることを願っています。それは確かに私のために働きます!
最初にセルビンに感謝したいと思います!
この答えは、セルビンの答えとほぼ同じですが、それを機能させるのに3時間かかりました:P SO SO SO NOTH THE REAL NEWBSのチュートリアル
キーストアからハッシュキーを入手する方法
- 最初にGoogleコードからOpenSSLをインストールし、C:フォルダーに入れますダウンロードリンク
- KeyToolプログラムの場所を見つける(Javaフォルダーのデフォルト)
- キーストアの場所を見つける(デバッグデフォルト値があります)
場所KeyTool C:プログラムファイル(x86) Java jdk1.xxx) bin keytool Location openssl c: openssl-win32 bin openssl位キーストア
Windows(start-> run-> cmd)でcmdを開き、キートールの場所に移動するか、次の文字列を貼り付けます。ctrl+vを使用することはできないことに注意してください。
cd c:\program files (x86)\java\jdk1.7.0_01\bin
右のディレクトリにあるとき、この文字列はCMD行に貼り付けます。
keytool.exe -exportcert -alias androiddebugkey -keystore c:\users\charx\.android\debug.keystore | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64
「c: openssl-win32 bin openssl」はopensssl.exeのパスですopenssl.exeのパスに置き換えます
私の場合にわかるように、PCの名前に[usernamepc]を変更してください。また、Java JDK XXXXのディレクトリはバージョンに依存します。
CMDはハッシュキーを表示する必要があります
デバッグファイルのハッシュキーは次のとおりです
h1GdQbgB8b/liCG+acmZWkgIRHA=
日食の解決策(私のような怠zyな人々のために)。
Eclipse、Export -Androidアプリケーション、キーパスなどのプロジェクトを選択し、下部の最後のページにMD5:.... Sha1:..。
SHA1文字列をコピーして、hex-base64オンラインコンバーターに貼り付けます(たとえば、これは次のとおりです。 http://tomeko.net/online_tools/hex_to_base64.php)
おめでとう! Facebook Dev Consoleに必要な重要なハッシュがあります。
上記のソリューションは何らかの理由で私にとってはうまくいきませんでしたが、キーハッシュをうまく生成することができました。私はあなたの署名されたAPKのキーハッシュを取得するための10の最も簡単なステップを書いています keystoreで署名:
以下のコードをコピーします
activity [start Activity]
このコードは、署名されたAPKのアクティビティが開始されたときに適切なキーハッシュを抽出できるように、アクティビティに含める必要があります。private void getHashKey() { try { PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.e("MY_KEY_HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } }
君の
AndroidManifest.xml
ファイルには属性が必要ですandroid:allowBackup="true"
そのアプリケーションタグ。署名済みのAPKをエクスポートし、携帯電話にアプリをインストールしてから、デバッグモードで電話を接続します
usb debugging on
.その後、行きます
sdk\platform-tools
コマンドプロンプトと入力を開きます
adb devices
デバイスが接続されているかどうかを確認します。デバイスがリストされていない場合は、次のステップに進む前にその問題を修正してみてください。次に、入力します
adb logcat >"log.txt"
. 。君のcmd
画面は絞首刑になります。パニックにならない。ログキャット全体が書かれているので、それは完全に正常ですlog.txt
.あなたのアプリを実行し、うまくいけばあなたがと思うとき
getHashKey()
関数が実行され、プレスが実行されますctrl+c
ログファイルの書き込みを終了するためのコマンドプロンプト。これで、コマンドプロンプトが再びレスポンシブになります。今あなたに入ります
sdk\platform-tools
dirと、ログを含むlog.txtファイルが作成されていることがわかります。ここで開きます
texteditor
そして、検索しますMY_KEY_HASH:
"----------あなたのkeyhash -------"- これをあなたにコピーします
FB account
またはあなたがそれを必要としてから、それから別のビルドを作成するandroid:allowBackup="false"
とgetHashKey()
機能が削除されます。
これが皆を助けてくれることを願っています:)
私はこのすべてに悩まされることができませんでした。FacebookSDKが署名したアプリをTEMPコードでエクスポートすることによって実際に送信しているものを見ることができます。 Facebookアプリとビンゴ!
あなたがあなたのアリエを使用する場合、このコマンドを使用してキーストアアリーズを見つけます
keytool -list -v -keystore keystore.jks | FindStr「エイリアス作成」