Facebook統合を使用してAndroidアプリを作成しようとして、ドキュメント内のキーハッシュファイルを生成する必要がある部分に行きました。次のコードを実行するように指定されています
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore
| openssl sha1 -binary
| openssl base64
端末でこれを実行すると、キーストアが改ざんされているか、パスワードが正しくないというエラーが表示されます。
キーハッシュを生成したい
誰かが私を正しい方向に向けることができますか?
〜/ .Android/debug.keystoreの下にあるデバッグ証明書を削除します(LinuxおよびMac OS X)。ディレクトリは、Windowsの%USERHOME%/。Androidのようなものです。
次に、Eclipseプラグインは、次にデバッグパッケージをビルドするときに新しい証明書を生成する必要があります。
それが機能するかどうか教えてください。
キーハッシュを生成するには、いくつかの簡単な手順に従う必要があります。
1)Opensslを次からダウンロードします: here。
2)opensslフォルダーをCドライブに作成します
3)Zipファイルをこのopensslフォルダーに作成しますCドライブ。
4)ファイルdebug.keystoreを。Androidフォルダーからコピーしますケース(C:\ Users\SYSTEM.Android)および私のケースのJDK binフォルダーに貼り付けます(C:\ Program Files\Java\jdk1.6.0_05\bin)
5)コマンドプロンプトを開き、私の場合のJDK Binフォルダーのパスを指定します(C:\ Program Files\Java\jdk1.6.0_05\bin) 。
6)次のコードをコピーしてEnterキーを押します
keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c:\ openssl\bin\debug.txt
7)ここで、パスワードを入力する必要があります、パスワード= Android。
8)opensslBinフォルダーにある場合、debug.txt
9)コマンドプロンプトを再起動するか、既存のコマンドプロンプトを操作することができます
10)Cドライブに戻り、openssl Binフォルダーのパスを指定します
11)次のコードをコピーして貼り付けます
openssl sha1 -binary debug.txt> debug_sha.txt
12)openssl binフォルダーにdebug_sha.txtを取得します
13)次のコードを再度コピーして貼り付けます
openssl base64 -in debug_sha.txt> debug_base64.txt
14)openssl binフォルダーにdebug_base64.txtを取得します
15)debug_base64.txtファイルを開くここにキーハッシュがあります。
私の経験では、opensslは常に面倒であり、facebookが提案する2番目の方法を試しました。そしてそれは素晴らしいです。これは、ハッシュキーを取得する最適な方法です。
2番目のオプションは、Facebookに送信されたキーハッシュを印刷し、その値を使用することです。メインアクティビティのonCreate()メソッドに次の変更を加えます。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
...other operations
}//end of onCreate
Com.facebook.samples.loginhowtoを独自のパッケージ名(Manifest.xmlのパッケージ名)に置き換えます。
公式リンク- https://developers.facebook.com/docs/Android/login-with-facebook/ (ページの下部を参照)
openssl
フォルダーを作成しますC:
driveのopenssl
フォルダーに抽出しますbin
のopenssl
に移動します。つまり、コマンドプロンプトでC:\openssl\bin
次のコマンドを実行して、キーハッシュを生成します。ハッシュキーを生成する際に、パスワードを尋ねる必要があります。
keytool -exportcert -alias androiddebugkey -keystore "C:\ Users\Anhsirk.Android\debug.keystore" | openssl sha1-バイナリ| openssl base64
NOTE:上記のコードでは、ユーザーへのパスを指定する必要があることに注意してください(つまり、私の場合はC:\ Users\Anhsirkで、ユーザーアカウントに対してこれを変更するだけです。
パスワードをAndroidとして与えます
。パスワードを求めない場合、キーストアのパスが正しくありません。
すべてが正常に機能する場合、以下のハッシュキーが表示されます。
適切なキーハッシュをトーストするために次のコードを追加することで、アプリ自体から正しいキーを取得できます(Facebook SDK 3.0以降の場合、これは機能します)
try {
PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("MY KEY HASH:", sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Com.package.mypackageをパッケージ名に置き換えます
I。 facebookのキーハッシュデバッグを作成します
Facebookのキーハッシュを印刷するコードを追加します
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.google.shoppingvn", 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 (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
II。 Facebookのキーハッシュリリースを作成する
(押す)keytool -exportcert -alias gci -keystore D:\ folder\keystorerelease | C:\ openssl\bin\openssl sha1 -binary | C:\ openssl\bin\openssl base64。注:D:\ folder\keystorerelease:は、keystorereleaseへのパスです
キーストアパスワードの入力:これは、keystorereleaseを登録するときのパスワードです。
次に、キーハッシュがあります:jDehABCDIQEDWAYz5Ow4sjsxLSw =
フェイスブックにログイン。アプリの管理へのアクセス。 developers.facebook.comでアプリにキーハッシュを貼り付けます
この問題に対する最も簡単な解決策:
私はこの問題を2か月間経験しました。私の主要なハッシュは9個まで並んでいます。今日、私はついに簡単な解決策を見つけました。
ステップ1:
携帯電話のfacebook開発者ページからダウンロードしたfacebook sdkをインストールします。通常のFacebookアプリをインストールしないでください。 Facebookにログインできることを確認してください。次にログアウトします。
ステップ2:
プレイストアにアップロードするときと同じように、最終リリースキーをapkとしてアプリをエクスポートします。
ステップ3:
USBケーブルまたはUSBスティックを介して携帯電話にApkファイルを配置します。
ステップ4:
ファイルマネージャーを使用してアプリをインストールします。 例
ステップ5:
アプリを起動して、facebookでログインしてみてください。ダイアログが開き、「facebook開発者コンソールにキーYOURHASHKEYが見つかりませんでした」と表示されます。
ステップ6:
キーを書き留めます。
STEP 7:
Facebook開発者コンソールに保存して保存します。これで完了です。以前に使用したキーストアで公開されたアプリをダウンロードした人は誰でもFacebookにログインできます。
楽しい
リリースする場合は、debug.keystoreではなく、アプリのエクスポートに使用したキーストアを使用します。
やっと :)
ここで私の話:
レイアウトを設定した後、このコードをメインアクティビティに追加します。
try {
PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("MY KEY HASH:", sign);
//textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
//textInstructionsOrLink.setText(sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
Log.d("nope","nope");
} catch (NoSuchAlgorithmException e) {
}
PROJECTNAMEをパッケージ名に変更してください!
デバッグ証明書のパスワードはAndroidではなくAndroidです
ハッシュキーを生成する最も簡単な方法
要件:SHA1 Key
signingReportを実行すると、SHA1キーを見つけることができます。
下の画像を参照してください。
ファイルを実行すると、必要なsha1キーを含む出力が生成されます。
次に、goto http://tomeko.net/online_tools/hex_to_base64.php
そしてsha1キーを貼り付けます
最後に、Required HashKeyを取得します。
Facebook用に生成する1行のソリューション
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
リリースキーハッシュを生成するには、いくつかの簡単な手順に従う必要があります。
1)ダウンロード Openssl
2)Cドライブにopensslフォルダーを作成します
3)Cドライブで作成されたこのopensslフォルダーにZipファイルを抽出します。
4)私の場合(C:\ Users\SYSTEM.Android)の.Androidフォルダーからファイルdebug.keystoreをコピーし、私の場合(C:\ Program Files\Java\jdk1.6.0_05\bin)のJDK binフォルダーに貼り付けます
5)コマンドプロンプトを開き、私の場合のJDK Binフォルダーのパス(C:\ Program Files\Java\jdk1.7.0_40\bin)を指定します。
6)次のコードをコピーしてEnterキーを押します
keytool -exportcert -alias abcd-keystore D:\ Projects\MyAppFolder\keystore.txt | C:\ openssl\bin\openssl sha1-バイナリ| C:\ openssl\bin\openssl base64 ex-keytool -exportcert -alias(署名apkエイリアス名はabcdのようにここに入力してください)-keystore「署名されたapkが生成したキーストアアプスがここに入力」 「openssl binフォルダーパスはここに入力してください」sha1-バイナリ| 「openssl binフォルダーパスはここに入力してください」base64
7)ここで、パスワードを入力する必要があります。パスワード=(ここにサインキーストアのパスワードを入力してください)
8)リリースアプリのキーハッシュに使用されるキーストアを取得しました
public String hashkey(Context context) {
String keyhash = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
return keyhash;
}
keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
このスレッドは古いですが、私の経験を共有したいと思います(最近facebookでの作業を開始しました)。
Facebook統合の開発キーを取得するには、Windowsのコマンドラインから次のコマンドを使用します。
keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.Android\debug.keystore | 「C:\ openssl\bin\openssl.exe」sha1-バイナリ| 「C:\ openssl\bin\openssl.exe」base64
注!:openssl.exeのパス(この例では「C:\ openssl\bin\openssl.exe」)を独自のインストールパスに置き換えてください。
キーストアのパスワードを入力:Android
上記のように、パスワードとしてAndroidと入力します。
それでおしまい! 28文字の長さのキーが与えられます。乾杯!
同じ手順を使用して、リリースキーを取得します。コマンドを次のコマンドに置き換えて、リリースキーエイリアスを使用するだけです。
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | 「openssl.exeのパス」sha1 -binary | openssl base64
この件に関する素晴らしいブログ投稿
.p12キーからキーハッシュを抽出する
Mac用の優れたシンプルな16進エディター:HexFiend
OpenSSLはMacにプリインストールする必要があります。Windowsバージョンのリンクは次のとおりです。
キーのパスワードを渡して、コマンドの一部として保存してみてください
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore -keypass Android -storepass Android \
| openssl sha1 -binary \
| openssl base64
私はここでいくつかの解決策で要求されたタスクを実行することができましたが、愚かな男の子だと思いました...これを行う小さなJavaコードを書いて、ジャー、だから...
A ダウンロードへのリンク ジャー
Windows 8で動作します...他のOSを試しませんでした。
みなさんこんにちは、私の話はどのようにサインされるのかはFacebookの鍵です
まず、最初のクラスでこの2つのメソッドをコピーするだけです
private void getAppKeyHash() {
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));
System.out.println("HASH " + something);
showSignedHashKey(something);
}
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
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());
}
}
public void showSignedHashKey(String hashKey) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Note Signed Hash Key");
adb.setMessage(hashKey);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
adb.show();
}
**署名されたハッシュが必要な場合はoncreateメソッドからfuncation getAppKeyHash()を呼び出し、署名されたビルドをインストールして署名されたビルドを実行し、ダイアログでハッシュキーを取得し、それをメモしてfacebook devアカウントで更新し、その関数をコメントして別の署名済みAPK **
あなたのパスワード= Androidが間違っている場合、それは私のためにそれの上にあなたのPCのパスワードを入れてください。
KeyHashを生成するには、このリンクを試してくださいHere
ログにキーハッシュを出力するためにkotlinでこれを使用してください
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", Android.util.Base64.encodeToString(md.digest(), Android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
私のために働く唯一のものは、パスワードAndroid
を使用することです。なぜそれがそこのガイドで言及されていないのですか?