안드로이드 페이스 북 키 해시를 만드는 방법?


181

나는이 과정을 전혀 이해하지 못한다. Java SDK에서 keytool이 포함 된 폴더로 이동할 수있었습니다. openssl이 내부 또는 외부 명령으로 인식되지 않는 오류가 계속 발생하지만. 문제는 이것을 작동 시키려면 어떻게해야하며 나중에 무엇을해야합니까?


최신 페이스 북 SDK를 사용하고 페이스 북 API를 완벽하게 입력 한 경우, 로그인하면 페이스 북에서 로그인을 클릭 한 다음 로그

로컬 컴퓨터에서 키 해시를 생성하려면 Android 디버그 키 저장소에 대해 Java의 keytool 유틸리티 (콘솔 경로에 있어야 함)를 실행하십시오. 기본적으로 홈 .android 디렉토리에 있습니다). OS X에서 다음을 실행하십시오. keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1-이진 | openssl base64 Windows에서 다음을 사용하십시오 .- keytool -exportcert -alias androiddebugkey -keystore % HOMEPATH % \. android \ debug.keystore | openssl sha1-이진 | openssl base64
Rakesh

왜 누군가가 디버그 키를 만들고 싶습니까?
Anders Lindén

키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

답변:


241

여기 당신이해야 할 일이 있습니다-

Code Extract 에서 openSSl을 다운로드 하십시오. C : /에 OpenSSL 폴더를 만들고 여기에 추출 된 코드를 복사하십시오.

debug.keystore 파일 경로를 감지하십시오. u를 찾지 못하면 C : /에서 검색하고 다음 단계의 명령에서 경로를 사용하십시오.

keytool.exe 경로를 감지하고 명령 프롬프트에서 해당 디렉토리로 이동 하여이 명령을 한 줄로 실행하십시오.

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

그것은 암호를 요구하고 모든 것을 안드로이드에 넣습니다. 너는 키 해시를 얻을 것이다.


암호를 물으면 원하는 것을 넣을 수 있습니까?
Somk

5
@Max, 기본 비밀번호는 android입니다.
jamapag

2
키 해시는 저장된 키 해시와 일치하지 않습니다. android, 작동하지 않습니다
Boldijar Paul

1
먼저 스튜디오에서 Build-> Build Apk로 이동하여 키 저장소를 작성하십시오. 이름과 암호 등을 제공하십시오. 쉽게 액세스 할 수있는 폴더에 .jks 파일로 저장하십시오. 이제 경로를 복사하고 위에서 언급 한 답변에서 해당 경로를 바꾸어 키를 생성하십시오.
buggydroid

1
"... 표현식은 파이프 라인의 첫 번째 요소로만 허용됩니다. 행 : char : 184 ... 표현식 또는 명령문에 예기치 않은 토큰 'sha1'이 있습니다. ... 파이프 라인의 첫 번째 요소 ... ... 표현식 또는 명령문에서 예기치 않은 토큰 'base64'+ CategoryInfo : ParserError : (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline "
android developer

175

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 " 이며 릴리스의 경우 키 저장소 작성 중에 설정 한 비밀번호를 입력해야합니다 .


3
명확하게하기 위해, 비밀번호는 비어 있습니다. 메시지가 표시되면 <enter>를 누르십시오.
Tom Redman

키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

1
참고 : "참고 : 두 경우 모두 암호를 요청해야합니다. 암호를 요청하지 않으면 명령에 문제가 있음을 의미합니다." 문제를 해결하기 위해 필수적
Bleno 실바

내 생명을 구 해주셔서 감사합니다. im 내내 키 저장소 암호로 내 맥 암호를 입력하고 나는 그것이 틀렸다는 것을 깨달았습니다
Lucky Angelo

1
암호를 요구한다고해서 모든 것이 정상임을 의미하는 것은 아닙니다 (잘못된 암호, 잘못된 키 별칭). keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>처음에는 혼자 실행 하여 모든 것이 정상인지 확인하십시오. 또한 파이프 된 경우 keytool은 비 대화식 모드이며 암호를 입력하면 일반 텍스트로 표시됩니다. 따라서 명령을 개별적으로 실행하는 작은 스크립트를 작성하는 것이 좋습니다.
Pierre

98

이것을 시도하십시오 :

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

키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

이것은가는 길이다
Tintinabulator Zea

1
pContext.getPackageInfo를 호출하면 작동합니다. 또는 함수에서 제거하고 모든 활동의 onCreate에서 호출하십시오.
Dpedrinha

1
.이 지금 getPackageManager () getPackageInfo ([당신의-package_name 여기서, PackageManager.GET_SIGNATURES) 것 같다

@Apurva 나중에 사용하려는 경우 Android SharedPreferences에 넣을 수 있습니다.
Maddy

49

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디버그 키 저장소를 가리 킵니다. 이 위치는 운영 체제에 따라 다릅니다. 다음 위치 중 하나에 있어야합니다.

  • Windows Vista 또는 7 -C : \ Users \ .android \ debug.keystore
  • Windows XP -C : \ 문서 및 설정 \ .android \ debug.keystore
  • OS X 및 Linux-~ / .android / debug.keystore

모든 것을 올바르게했다면 암호를 입력하라는 메시지가 나타납니다. 즉 android디버그 인증서. 암호가 올바른 경우 콘솔은 해시 (임의의 임의의 문자 및 숫자)를 인쇄합니다.

그것을 가져 와서 android key hash페이스 북의 앱 환경 설정 내의 필드에 복사하십시오 . 거기에 가려면 developers.facebook.com/apps 로 이동 하여 앱을 선택 Edit settings하고 아래로 스크롤하십시오. 그런 다음 변경 사항이 적용될 때까지 몇 분 정도 기다리십시오.


나는 이것을 cmd에서 실행했고 = 기호로 끝나는 해시처럼 보이는 매우 긴 문자 목록을 출력했다. $ keytool -exportcert -alias androiddebugkey -keystore "C : \ Users \ .android \ debug.keystore"| "C : \ OpenSSL \ bin \ openssl"sha1 -binary | "C : \ OpenSSL \ bin \ openssl"base64
Somk

정확합니다. 방금 내 컴퓨터에서 테스트했으며 28 자의 길이로 아이디어를 제공했습니다. 이제 복사 만하면됩니다. :)

그래도 pharse android를 사용하라는 메시지가 표시되지 않았습니다. 내가 느리게 미안 해요?
Somk

솔직히 말하면, 왜 당신이 그것에 대해 묻지 않았는지 모르겠습니다. 그러나 그것은 나에게 맞는 것 같습니다. 내 말은, 당신이 뭔가 잘못했을 경우, 대신 오류 메시지가 있어야합니다. 그냥 복사하고 작동하는지 확인하십시오. Graph API Explorer를 사용하여 일부 그래프 쿼리를 테스트 할 수 있습니다 . 상단에서 앱을 선택하고 유효한 결과가 있는지 확인하십시오. 뭔가 잘못되면 오류가 발생합니다. 편집 : 그리고 느린 비음에는 아무런 문제가 없습니다. 우리는 서두르지 않습니다. :)

24

로컬 컴퓨터에서 키 해시를 생성하려면 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-개발자 페이스 북 사이트


키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

19

자세한 내용은 다음과 같습니다 (Windows의 경우).

1. 시스템 32 비트 또는 64 비트에 따라 OpenSSl 을 3 또는 4로 다운로드 하십시오 (e가 더 잘 작동 함).

2. C 디렉토리에서 다운로드 한 zip을 추출하십시오.

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 ~> 사용자 ~> 사용자 이름 ~>.

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

이제 명령 프롬프트 에이 명령을 입력하십시오. 올바른 일이 있으면 암호를 묻는 메시지가 표시됩니다 (암호는 안드로이드입니다)

Enter keystore password:  android

그게, 당신은 키 해시를받을 것입니다, 그냥 복사하여 사용하십시오

서명 된 KeyHash의 경우 다음 명령을 구성하십시오.

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

키 저장소 비밀번호를 입력하십시오. 잘못된 비밀번호를 입력하면 잘못된 KeyHash가 제공됩니다.

노트

어떤 이유로 어떤 경로에서 오류가 발생하면 해당 경로를 큰 따옴표로 묶습니다 .Windows 전원 셸이 제대로 작동하지 않으면 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
대단히 감사합니다. 초보자를위한 매우 상세한 안내서입니다!
Pablo Quemé

@TamimProduction은 openssl의 k 버전으로 위의 절차를 동일하게 시도하고 code.google.com/archive/p/openssl-for-windows/downloads
Manohar Reddy

@TamimProduction 잘못된 암호를 입력하면 잘못된 keyhash가 반환됩니다. 또한 키 저장소를 삭제 한 후 APK를 다시 작성 했습니까?
Manohar Reddy

@TamimProduction Facebook 응용 프로그램을 다운로드하여 설치하고 페이스 북 응용 프로그램에 로그인하십시오. 앱을 열고 페이스 북 로그인을하십시오. 그것은 당신과 동일 여부를 확인, 당신은 페이스 북의 응용 프로그램에서 키 해시를 줄 것이다
Manohar 레디에게


18

브라우저 콘솔에서 한 줄 자바 스크립트를 사용하여 16 진 맵 키를 base64로 변환 할 수 있습니다. 최신 브라우저 (Windows의 경우 F12)에서 콘솔을 열고 코드를 붙여넣고 Google Play에서 제공 하는 SHA-1, SHA-25616 진수 맵을 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="

1
당신은 생명의 은인, 감사합니다
Yusuf Adeyemo

SHA-1이 그 중 하나였습니다.
Travo

16

짧은 해결책도 있습니다. 앱에서 이것을 실행하십시오.

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

결과는 "="로 끝나야합니다.


1
FB에서 허용하지 않는 키 해시에 '_'이 있음을 알았습니다. 해시를 사용하려면 해시를 '/'로 변경해야했습니다.
Abdelalim Hassouna

Facebook 함수는 -AAAAAAAA_AAAAAA-AAAAAAAAAAFacebook에서 허용하지 않는 키를 반환했습니다. printHashKey는 유효한 형식으로 키를 반환했습니다.+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov

@GrafOrlov 얼마나 이상합니다. 새로운 FB SDK 버전에 버그가있을 수 있습니다. 그들에 대해보고해야합니다.
안드로이드 개발자

9

Windows의 경우 :

  1. 명령 프롬프트를 열고 아래 명령을 붙여 넣습니다.

keytool -exportcert -alias androiddebugkey -keystore % HOMEPATH % .android \ debug.keystore | openssl sha1-이진 | openssl base64

  1. 비밀번호 입력 : android-> Hit Enter

  2. 생성 된 해시 키 복사-> 개발자 계정으로 Facebook 로그인

  3. "키 해시"옵션-> 변경 사항 저장에서 Facebook 앱-> 설정-> 붙여 넣기 키로 이동하십시오.

  4. 이제 Facebook 로그인 / 공유 등으로 안드로이드 앱을 테스트하십시오.


키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

안녕하세요, 주요 활동에서 코드를 통해 해시 키를 생성 할 수 있지만 생성 된 해시 키는 단일 장치에서만 작동합니다. 다른 장치에 동일한 APK를 설치하고 실행하면 잘못된 해시 키 오류가 표시됩니다. 내가 놓친 것이 있습니까?
Deepak

8

API 26부터 Facebook SDK없이 KOTLIN 에서 다음 코드를 사용 하여 HASH KEYS 를 생성 할 수 있습니다.

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

6

그것이 내가 얻은 방법입니다.

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 키를 넣었습니다. 복사하기 만하면됩니다.


키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

6

이미 Play 스토어에 앱을 업로드 한 경우 다음과 같이 해시 키를 생성 할 수 있습니다.

릴리스 관리 1) 이동 여기에

2) 릴리스 관리-> 앱 서명을 선택하십시오.

3) 16 진수 형식 앱 서명 인증서에서 SHA1 키를 볼 수 있습니다.


4) 16 진수 형식으로 SHA1을 복사하고 base64 형식으로 변환하면 링크를 사용 하여 16 진수의 SHA1 : 부분없이 링크를 사용할 수 있습니다 .


5) Facebook 개발자 콘솔로 이동하여 설정 —> 기본 –> 키 해시에 키를 추가하십시오 (기본 64로 변환 한 후).



3

오픈 SSL 다운로드 :

그런 다음 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 개의 숫자를 복사하십시오.


원래 답변에 이미 openssl 링크가 있음을 보지 못했습니다. 그러나 여전히 시스템 변수에 유용합니다.
sagits

키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

물론 28 길이의 숫자를 생성 했습니까? 그렇다면 페이스 북 개발자 (Google 검색) 사이트로 이동하여 새 응용 프로그램을 만들어야합니다. 설정에서 새 Android 앱을 추가하고 키 해시와 활동 이름 (로그인 코드가있는 위치)을 붙여 넣을 수 있습니다 ). 페이스 북에 관한 튜토리얼도 있습니다
sagits

빠른 답변을 보내 주셔서 감사합니다. 곧 시도하겠습니다
Apurva

3

앱에서 다음 중 하나를 실행하십시오.

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

그런 다음 로그를보십시오.

결과는 "="로 끝나야합니다.

해결책은 여기여기를 기반으로 합니다 .


3

쉬운 방법-> openssl을 설치하지 마십시오-> GIT BASH 사용!

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

기본 비밀번호는 "android"입니다.

우리 대부분은 Git Bash를 설치 했으므로 이것이 내가 가장 좋아하는 방법입니다.


3

이것은 또한 새로운 꿀벌을 도울 것입니다.

@ 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. 이것은 런 박스를 엽니 다.

7. cmd를 입력하고 Ctrl + Shift + Enter를 누르십시오 .

8. 관리자 권한으로 명령 프롬프트가 열립니다.

9. 여기에서 java의 bin 폴더로 이동합니다.

Android Studio에서 제공하는 jre를 사용하면 다음과 같은 경로를 찾을 수
있습니다. 안드로이드 스튜디오를 엽니 다.
비. 파일-> 프로젝트 구조
c. 왼쪽 창에서 'SDK 위치'를 클릭하십시오
. d. 오른쪽 창의 'JDK 위치'아래에 jre 경로가 있습니다.
이자형. "keytool.exe"파일이이 폴더 안에 있으므로이 경로의 끝에 "\ bin"을 추가하십시오.
이 예제에서는
"C : \ Program Files \ Java \ jre-10.0.2 \ bin"
32 비트 Java를 설치 한 경우
"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
  1. 키 저장소 키를 작성할 때 제공 한 비밀번호를 입력하십시오.

    !!!!!! 이것은 당신에게 열쇠를 줄 것입니다

오류 : 당신이 얻는 경우 :
---
'keytool'은 내부 또는 외부 명령으로 인식되지 않습니다
---
이것은 Java가 다른 곳에 설치되어 있음을 의미합니다.


3

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 ur SHA1 값을 HASH KEY로 변환 하십시오.

im 100 %이 링크가 도움이 될 것이라고 확신합니다



2

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

1

https://developers.facebook.com/docs/android/getting-started/

4.19.0-2017 년 1 월 25 일

페이스 북 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();
}

1

그냥 이 코드를 실행 당신의 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";
}

0

나는 똑같은 정확한 문제를 겪고 있었고 암호를 요구하지 않았으며 키 저장소 파일의 경로가 잘못 된 것 같습니다.

실제로 keytool이 설정 한 키 저장소를 찾지 못하면 올바른 키 저장소를 사용하지 않기 때문에 키 저장소를 작성하여 잘못된 키를 제공합니다.

일반적인 규칙은 암호를 요구하지 않으면 잘못된 키가 생성되는 것입니다.


키 해시를 생성했지만 해당 키를 어디에 둘지 모르겠습니다. 안내해 주시겠습니까? 우분투에서 안드로이드 스튜디오를 실행 중입니다.
Apurva

0

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

@Elynad 그것은 중국인이다 : D
armnotstrong


0

keytool -exportcert -alias androiddebugkey -keystore "C : \ Users ** Deepak **. android \ debug.keystore"| " C : \ Users \ Deepak \ ssl \ bin \ openssl"sha1-이진 | " 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-이진 | "C : \ Users \ Deepak \ ssl \ bin \ openssl"base64 키 저장소 비밀번호를 입력하십시오 : ****** ga0RGNY ********************* =


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.