Programing

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

lottogame 2020. 5. 31. 09:54
반응형

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


나는이 과정을 전혀 이해하지 못한다. 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-개발자 페이스 북 사이트


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

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

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


나 같은 사람은 여기에 완전한 세부 사항입니다 (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

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 로그인 / 공유 등으로 안드로이드 앱을 테스트하십시오.


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

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


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

}

여기에 이미지 설명을 입력하십시오


쉽게으로 vedio 튜토리얼 링크의 경우는 KeyHash을 생성 여기에

여기 에서 openssl 다운로드


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


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

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

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

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

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


You can simply use one line javascript in browser console to convert a hex map key to base64. Open console in latest browser (F12 on windows) and paste the code and replace the SHA-1, SHA-256 hex map that Google play provides under 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="

You can get all your fingerprints from https://console.developers.google.com/projectselector/apis/credentials
And use this Kotlin code to convert it to keyhash:

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 - January 25, 2017

Facebook SDK

Modified

Facebook SDK is now auto initialized when the application starts. In most cases a manual call to FacebookSDK.sdkInitialize() is no longer needed. See upgrade guide for more details.

For Debug

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

EASY WAY -> Don't install openssl -> USE GIT BASH!

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

The default password is "android"

Most of us have Git Bash installed so this is my favorite way.


If you have already uploaded the app to Play store you can generate Hash Key as follows:

1) Go to Release Management here

2) Select Release Management
 -> App Signing

3) You can see SHA1 key in hex format App signing certificate.


4) Copy the SHA1 in hex format and convert it in to base64 format, you can use this link do that without the SHA1: part of the hex.


5) Go to Facebook developer console and add the key(after convert to base 64) in the settings —> basic –> key hashes.


I was having the same exact problem, I wasnt being asked for a password, and it seems that I had the wrong path for the keystore file.

In fact, if the keytool doesn't find the keystore you have set, it will create one and give you the wrong key since it isn't using the correct one.

The general rule is that if you aren't being asked for a password then you have the wrong key being generated.


You can use this 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

Try this answer

https://stackoverflow.com/a/54513168/9236994

with minimal efforts helps to resolve the issue.


this will help newbees also.

just adding more details to @coder_For_Life22's answer.

if this answer helps you don't forget to upvote. it motivates us.

for this you must already know the path of the app's keystore file and password

for this example consider the key is stored at "c:\keystorekey\new.jks"

1. open this page https://code.google.com/archive/p/openssl-for-windows/downloads

2. download 32 or 64 bit zip file as per your windows OS.

3. extract the downloaded file where ever you want and remember the path.

4. for this example we consider that you have extracted the folder in download folder.

so the file address will be "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe";

5. now on keyboard press windows+r button.

6. this will open run box.

7. type cmd and press Ctrl+Shift+Enter.

8. this will open command prompt as administrator.

9. here navigate to java's bin folder:

if you use jre provided by Android Studio you will find the path as follows:
a. open android studio.
b. file->project structure
c. in the left pane, click 'SDK location'
d. in the right pane, below 'JDK location' is your jre path.
e. add "\bin" at the end of this path as the file "keytool.exe", we need, is inside this folder.
for this example i consider, you have installed java separately and following is the path
"C:\Program Files\Java\jre-10.0.2\bin"
if you have installed 32bit java it will be in
"C:\Program Files (x86)\Java\jre-10.0.2\bin"
10. now with above paths execute command as following:

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. You will be asked for password, give the password you have given when creating keystore key.

    !!!!!! this will give you the key

errors: if you get:
---
'keytool' is not recognized as an internal or external command
---
this means that java is installed somewhere else.


step 1 open ur project folder

step 2 open ur project folder/ go to command page

example:D:\naveen\project\androidproject>

step 3paste this line ur cmd line

D : \ naveen \ project \ androidproject> keytool -list -v -keystore C : \ Users \ admin.android/debug.keystore-alias androiddebugkey -storepass android -keypass android

4 단계 : ur C : \ Users \ admin -----> ur 경로를 변경하십시오.

uu SHA1이 있습니다.이 링크를 클릭하십시오. u ur SHA1 값을 HASH KEY로 변환 하십시오.

메신저 100 %이 링크가 도움이 될 것입니다

참고 URL : https://stackoverflow.com/questions/7506392/how-to-create-android-facebook-key-hash

반응형