8

Facebookをアプリに統合するためのキーハッシュを生成しようとしましたが、cmdプロンプトを使用してキーハッシュを生成すると、生成できません。

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'は、内部または外部コマンド、操作可能なプログラム、またはバッチファイルとして認識されません。

何が問題ですか?

4

5 に答える 5

12

このコマンドを使用して、最初にこのファイルhttp://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zipをダウンロードします。次に、ファイルを抽出して、次のコマンドを実行します。

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は私のシステム名であり、システム名に置き換える必要があります。

于 2012-11-20T05:46:46.040 に答える
9
  1. openssl-for-windowsパッケージをダウンロードします。
  2. zipを解凍します。
  3. Windowsで、を指すパスシステム変数を編集します<openssl-extracted-folder>/bin
  4. 次に、コマンドを実行します。
于 2015-01-23T18:53:13.083 に答える
4

最初にFacebookのSDKセットアップを実行し、次にメインプログラムを実行します。これを追加すると、コンソールでキーハッシュが取得されます。

デバッグとリリースキーの3つのタイプのキーの可能性があり、Googleの変更の署名をアップロードした後、これら3つのキーすべてをFacebook開発者アカウントに提供し、Facebookのログインを確認できます。アプリのモードに応じて、Facebookがキーと一致します。AndroidStudioのAndroidモニターがわからない場合は、トーストを使用してキーハッシュを確認してください。

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);
    }
}

}

于 2016-10-01T06:20:22.677 に答える
2

答えは遅いですが、私のような怠惰な人には役立ちます。このコードをApplicationクラスに追加すると、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>
于 2016-08-05T06:02:10.883 に答える
0

https://code.google.com/archive/p/openssl-for-windows/downloadsからopensslをダウンロードします。

ファイルを抽出してからCMDで実行し、ルートとKeyNameを再配置します

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.
于 2019-09-04T02:08:16.433 に答える