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

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



답변

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

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

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


답변

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


답변

이것을 시도하십시오 :

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

  • 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하고 아래로 스크롤하십시오. 그런 다음 변경 사항이 적용될 때까지 몇 분 정도 기다리십시오.


답변

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


답변

자세한 내용은 다음과 같습니다 (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


답변

브라우저 콘솔에서 한 줄 자바 스크립트를 사용하여 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="