私はこのプロセスをまったく理解していません。Java SDKのkeytoolを含むフォルダーに移動できました。opensslが内部または外部コマンドとして認識されないというエラーが発生し続けます。問題は、これを機能させることができたとしても、私は何をし、その後はどうするのでしょうか。
私はこのプロセスをまったく理解していません。Java SDKのkeytoolを含むフォルダーに移動できました。opensslが内部または外部コマンドとして認識されないというエラーが発生し続けます。問題は、これを機能させることができたとしても、私は何をし、その後はどうするのでしょうか。
回答:
これがあなたがする必要があることです-
コードからopenSSlをダウンロードしてください 。C:/にフォルダー-OpenSSLを作成し、抽出したコードをここにコピーします。
debug.keystoreファイルのパスを検出します。uが見つからなかった場合は、C:/で検索し、次のステップのコマンドでパスを使用します。
keytool.exeパスを検出し、コマンドプロンプトでそのdir /に移動して、このコマンドを1行で実行します。
$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64
それはパスワードを要求します、それはアンドロイドを置くすべてです。あなたはキーハッシュを取得します
android
です。
LinuxおよびMacの場合
ターミナルを開く:
デバッグビルド用
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
あなたは見つけるでしょうdebug.keystoreを「.android」フォルダに。それをコピーしてデスクトップに貼り付け、上記のコマンドを実行します。
リリースビルド用
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
注:どちらの場合もパスワードを要求することを確認してください。パスワードを要求しない場合は、コマンドに問題があることを意味します。debug.keystoreのパスワードは「android」であり、リリースでは、キーストアの作成時に設定したパスワードを入力する必要があります。
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>
最初は一人で実行し、すべてが正常かどうかを確認します。さらに、パイプ接続されると、keytoolは非インタラクティブモードになり、入力時にパスワードをプレーンテキストで表示します。したがって、コマンドを個別に実行する小さなスクリプトを記述する方がよいでしょう。
これを試してください:
public static void printHashKey(Context pContext) {
try {
PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
}
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "printHashKey()", e);
} catch (Exception e) {
Log.e(TAG, "printHashKey()", e);
}
}
OpenSSL:オペレーティングシステムにプレインストールされていない場合はインストールする必要があります(たとえば、Windowsにはプレインストールされていません)。OSに依存するインストール方法(Windowsの場合はリンクを確認してください)、coder_For_Life22が提供する)。
Windowsを使用している場合は、いじりずに最も簡単な方法は、openssl.exeバイナリをキーツールパスにコピーすることです。そうしたくない場合は、PATH
環境変数に追加する必要があります。次に、ドキュメントで提供されているコマンドを実行します。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
の後の引数は-keystore
デバッグキーストアを指すことに注意してください。この場所は、オペレーティングシステムによっても異なります。次の場所のいずれかにある必要があります。
すべてが正しければ、パスワードの入力を求められます。これはandroid
デバッグ証明書用です。パスワードが正しい場合、コンソールはハッシュ(ややランダムな文字と数字)を出力します。
それを取得して、android key hash
Facebookのアプリの設定内のフィールドにコピーします。アクセスするには、developers.facebook.com /appsにアクセスしEdit settings
、アプリを選択して、に移動して下にスクロールします。その後、変更が有効になるまで数分待ちます。
ローカルコンピューターでキーハッシュを生成するには、Androidデバッグキーストアに対してJavaのkeytoolユーティリティ(コンソールのパスにある必要があります)を実行します。これはデフォルトで、ホーム.androidディレクトリにあります)。OS Xでは、次を実行:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Windowsでは、以下を使用します。
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
これがあなたを助けることを願っています
Ref-開発者向けFacebookサイト
詳細はこちら(Windowsの場合)
1.システムに基づいて、32ビットまたは64ビットのOpenSSlを 3番目または4番目にダウンロードします(eの方が効果的です)。
2.ダウンロードしたzipをCディレクトリ内に抽出します
3.抽出されたフォルダーをbinまで開き、パスをコピーします。これは次のようになりますC:\openssl-0.9.8k_X64\bin\openssl
(最後に\ opensslを追加します)。
4.(方法がわかっている場合は、Jdkのbinフォルダーへのパスを取得し、これを無視します)。
android studio〜file〜Project Structure(ctrl + alt + shift + s)を開き、左側のパネルでSDKの場所を選択し、JDKの場所をコピーして/ binを追加します
したがって、最終的なJDKの場所は次のようになります C:\Program Files\Android\Android Studio\jre\bin
私のように埋め込まれたjdkを使用する可能性があるため、Jdkの場所を取得するためにこのメソッドに従っています
OpenSSlの場所とJDKの場所ができました
5.デバッグキーストアの場所が必要です。開いているC〜> Users〜> YourUserName〜> .androidの場合、ファイル名debug.keystoreが必要です。パスの場所をコピーしてください。次のようになります。
C:\Users\Redman\.android\debug.keystore
6.コマンドプロンプトを開き、コマンドを入力します
cd YourJDKLocationFromStep4
私の場合
cd "C:\Program Files\Android\Android Studio\jre\bin"
7.次のコマンドを作成します
keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
私の場合、コマンドは次のようになります
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
コマンドプロンプトでこのコマンドを入力します。正しく実行した場合、パスワードを要求されます(パスワードはandroidです)。
Enter keystore password: android
それ、それはあなたにキーハッシュが与えられ、それをコピーして使用するだけです
Signed KeyHashの場合、次のコマンドを作成します
keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
キーストアのパスワードを入力してください。間違ったパスワードを入力すると、間違ったKeyHashが返されます
注意
何らかの理由で何らかのパスでエラーが発生した場合は、そのパスを二重引用符で囲みます。また、Windows Power Shellがうまく機能しなかった場合は、git bash(またはコマンドプロンプトを使用)を使用しました。
例
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
ブラウザコンソールで1行のJavaScriptを使用するだけで、16進数のマップキーをbase64に変換できます。最新のブラウザ(Windows上のF12)でコンソールを開き、コードを貼り付け、置き換えSHA-1
、SHA-256
Google Playには、下の提供するヘクスRelease Managment
>をApp signing
:
> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
短い解決策もあります。アプリでこれを実行してください:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));
FB SDKを必要としない長いもの(ここでのソリューションに基づく):
public static void printHashKey(Context context) {
try {
final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
final MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i("AppLog", "key:" + hashKey + "=");
}
} catch (Exception e) {
Log.e("AppLog", "error:", e);
}
}
結果は "="で終わる必要があります。
-AAAAAAAA_AAAAAA-AAAAAAAAAA
Facebookで許可されていないため、キーを返しました。printHashKeyはキーを有効な形式で返しました+AAAAAAAA/AAAAAA+AAAAAAAAAA=
Windowsの場合:
keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | openssl sha1 -binary | openssl base64
パスワードを入力:android-> Enterキーを押します
生成されたハッシュキーをコピー->開発者アカウントでFacebookにログイン
Facebookアプリに移動します->設定->「キーハッシュ」オプションにハッシュキーを貼り付けます->変更を保存します。
Facebookのログイン/共有などでAndroidアプリをテストします。
API 26以降、Facebook SDK を使用せずにKOTLINで次のコードを使用してハッシュキーを生成できます。
fun generateSSHKey(context: Context){
try {
val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.getEncoder().encode(md.digest()))
Log.i("AppLog", "key:$hashKey=")
}
} catch (e: Exception) {
Log.e("AppLog", "error:", e)
}
}
class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
それが私の入手方法です:
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (exception != null) {
new AlertDialog.Builder(FriendActivity.this)
.setTitle(R.string.login_failed_dialog_title)
.setMessage(exception.getMessage())
.setPositiveButton(R.string.ok_button, null)
.show();
}
したがって、キーなしで入力しようとすると、例外が発生します。Facebookはこの例外にRIGHTキーを入れました。コピーするだけです。
次に、openssl \ binをパスシステム変数に追加します。
私のコンピューター->プロパティ->詳細設定->詳細設定->システム変数->システム変数の下にパスを見つけ、これを末尾に追加します:; yourFullOpenSSLDir \ bin
次に、jdk \ binフォルダーC:\ Program Files \ Java \ jdk1.8.0_40 \ binでコマンドラインを開き(WindowsではShiftキーを押しながら右クリックして、ここでコマンドラインを開きます)、次のコマンドを使用します。
keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64
パスワードを入力した後に生成される28文字の番号をコピーします。
これをあなたのアプリで実行してください:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");
またはこれ:
public static void printHashKey(Context context) {
try {
final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
final MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i("AppLog", "key:" + hashKey + "=");
}
} catch (Exception e) {
Log.e("AppLog", "error:", e);
}
}
そして、ログを見てください。
結果は "="で終わる必要があります。
これは、初心者にも役立ちます。
@ coder_For_Life22の回答に詳細を追加するだけです。
この回答が役立つ場合は、投票することを忘れないでください。それは私たちをやる気にさせます。
この
ため、この例ではアプリのキーストアファイルとパスワードのパスを知っている必要があります。キーは「c:\ keystorekey \ new.jks」に保存されていると考えて
ください。1.このページを開く https://code.google.com/archive / p / openssl-for-windows / downloads
2. Windows OSに応じて32ビットまたは64ビットのzipファイルをダウンロードします。
3.ダウンロードしたファイルを好きな場所に抽出し、パスを覚えておきます。
4.この例では、ダウンロードフォルダー内のフォルダーを抽出したと見なします。
したがって、ファイルアドレスは「C:\ Users \ 0 \ Downloads \ openssl-0.9.8e_X64 \ bin \ openssl.exe」になります。
5.キーボードでwindows + rボタンを押します。
6.これで実行ボックスが開きます。
e。このフォルダ内に必要なファイル「keytool.exe」として、このパスの最後に「\ bin」を追加します。
7. cmdと入力し、Ctrl + Shift + Enterを押します。
8.これにより、管理者としてコマンドプロンプトが開きます。
9.ここで、javaのbinフォルダーに移動します
。AndroidStudioによって提供されるjreを使用する場合、パスは次のようになります
。Androidスタジオを開きます。
b。ファイル->プロジェクト構造
c。左側のペインで、「SDKの場所」をクリックします
。右側のペインで、「JDKの場所」の下にjreパスがあります。
32ビットJavaをインストールした場合は、
この例では、私は、
"C:\ Program Files \ Java \ jre-10.0.2 \ bin"
「C:\ Program Files(x86)\ Java \ jre-10.0.2 \ bin」
10.上記のパスを使用して、次のようにコマンドを実行します。
keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
エラー:次のエラーが発生した場合:
---
'keytool'は内部または外部コマンドとして認識されません
---
これは、Javaが別の場所にインストールされていることを意味します。
ステップ1-> C:\ Program Files \ Java \ jdk1.6.0_43 \ bin>
手順2-> keytool -list -v -keystore C:\ Users \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android
u SHA1値を取得このリンクをクリック u uSHA1値をハッシュキーに変換
im 100%このリンクがあなたを助けると確信しています
https://console.developers.google.com/projectselector/apis/credentialsからすべての指紋を取得でき
ます。次のKotlinコードを使用して、キーハッシュに変換します。
fun main(args: Array<String>) {
listOf("<your_production_sha1_fingerprint>",
"<your_debug1_sha1_fingerprint>",
"<your_debug2_sha1_fingerprint>")
.map { it.split(":") }
.map { it.map { it.toInt(16).toByte() }.toByteArray() }
.map { String(Base64.getEncoder().encode(it)) }
.forEach { println(it) }
}
https://developers.facebook.com/docs/android/getting-started/
4.19.0-2017年1月25日
Facebook SDK
修正
アプリケーションの起動時にFacebook SDKが自動初期化されるようになりました。ほとんどの場合、FacebookSDK.sdkInitialize()を手動で呼び出す必要はありません。詳細については、アップグレードガイドを参照してください。
デバッグ用
try {
PackageInfo info = getPackageManager().getPackageInfo(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));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
OnCreateViewまたはOnStart Actvity でこのコードを実行するだけで、この関数は開発キーハッシュを返します。
private String generateKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = (MessageDigest.getInstance("SHA"));
md.update(signature.toByteArray());
return new String(Base64.encode(md.digest(), 0));
}
}catch (Exception e) {
Log.e("exception", e.toString());
}
return "key hash not found";
}
私はまったく同じ問題を抱えていて、パスワードを求められず、キーストアファイルのパスが間違っているようです。
実際、keytoolが設定したキーストアを見つけられない場合は、正しいキーを使用していないため、キーが作成され、間違ったキーが返されます。
一般的なルールとして、パスワードの入力を求められない場合は、間違ったキーが生成されます。
あなたはこのapkを使うことができます
1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
keytool -exportcert -alias androiddebugkey -keystore "C:\ Users ** Deepak **。android \ debug.keystore" | " C:\ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | " C:\ Users \ Deepak \ ssl \ bin \ openssl" base64
2この上記のコマンドの変更1.Deepak ===システムのユーザー名に置き換えます2.C:\ Users \ Deepak \ ssl === Open SSLパスを置き換えます
このコマンドを実行して、次のような出力を取得します
C:\ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C:\ Users \ D eepak.android \ debug.keystore" | "C:\ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | "C:\ Users \ Deepak \ ssl \ bin \ openssl" base64 Enter keystore password:****** ga0RGNY ****************** =
opensslに問題がある場合は、次の手順に従ってください。
それでおしまい
https://sourceforge.net/projects/openssl/files/latest/download