Facebook 게시 기능을 통합하려는 Android 앱을 개발 중입니다. Facebook-Android SDK를 다운로드했고 거기에 readme.md (텍스트 파일)가 있는데 여기에는 Android 용 키 해시를 생성한다고 언급되어 있습니다. 어떻게 생성합니까?
Facebook 게시 기능을 통합하려는 Android 앱을 개발 중입니다. Facebook-Android SDK를 다운로드했고 거기에 readme.md (텍스트 파일)가 있는데 여기에는 Android 용 키 해시를 생성한다고 언급되어 있습니다. 어떻게 생성합니까?
답변:
단계는 다음과 같습니다.
Google 코드 에서 openssl 다운로드 (64 비트 시스템을 사용 하는 경우 최신 버전이 아닌 openssl-0.9.8e X64를 다운로드 해야 함 )
추출하십시오. C : /에 OpenSSL 폴더를 만들고 여기에 추출 된 코드를 복사하십시오.
debug.keystore 파일 경로를 감지하십시오. u를 찾지 못하면 C : /에서 검색하고 다음 단계의 명령에서 경로를 사용하십시오.
keytool.exe 경로를 감지하고 명령 프롬프트에서 해당 dir /로 이동 하여이 명령을 한 줄로 실행하십시오.
$ keytool -exportcert -alias androiddebugkey -keystore "C : \ Documents and Settings \ Administrator.android \ debug.keystore"| "C : \ OpenSSL \ bin \ openssl"sha1 -binary | "C : \ OpenSSL \ bin \ openssl"base64
자세한 내용 은 여기를 방문하십시오
$
.
[편집 2020]-> 이제 나는 안드로이드 스튜디오를 사용하여 더 쉽고, 더 빠르고 코드를 작성할 필요가없는 방법을 여기 에서 완전히 추천합니다. 아래 코드는 일식으로 돌아 왔습니다 :)-.
모든 활동에서이 코드를 사용할 수 있습니다. 디버그 키인 logcat에 해시 키를 기록합니다. 이것은 쉽고 SSL을 사용하는 것보다 안심입니다.
PackageInfo info;
try {
info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
//String something = new String(Base64.encodeBytes(md.digest()));
Log.e("hash key", something);
}
} catch (NameNotFoundException e1) {
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
키를 알고 나면 코드를 삭제할 수 있습니다.;)
keytool
명령을 사용하여 잘못된 키 해시를 얻었습니다 (왜 조사 할만큼 신경 쓰지 않기로 결정했는지 모르겠습니다). 이것은 효과적이고 문자 그대로 디버그 및 릴리스 키 해시를 얻는 데 5 분이 걸렸습니다. +1
Windows 및 Mac OS X 용 작은 도구를 만들었습니다. 키 저장소 파일을 던져 해시 키를 얻으십시오.
기본 debug.keystore 파일을 원하는 경우 기본 별명 및 비밀번호를 사용하십시오. 그렇지 않으면, 자신의 키 저장소 파일과 값을 사용하십시오.
그것을 확인 Windows 버전을 다운로드 또는 맥 OS X 버전을 다운로드 (데브 - 호스트 링크가 깨진 경우 그래서, PM 나와 내가 고칠거야 ... 때로는 아래로 수 있습니다).
도움이 되길 바랍니다.
2014 년 12 월 31 일-편집 : 호스트를 AFH로 변경했습니다. 링크가 끊어지면 알려주세요
2013 년 11 월 21 일-편집 :
사용자가 요청한대로 기본 키 저장소 위치와 DONATE 버튼을 추가했습니다 . 내가 도와 주면 언제든지 사용하십시오 . :)
keytool
명령 줄 을 사용하는 것과 비교하여 도구에서 다른 SHA 키를 제공하는 이유는 무엇 입니까? 동일한 키 저장소 파일에 적용되는 경우 동일한 결과를 생성하지 않습니까?
현재 Facebook의 Android 자습서 에있는 지침 은 Windows 에서 제대로 작동하지 않습니다 . 그들의 예제는 keytool 출력을 openssl로 파이프하는 방법을 보여 주지만 Windows에서 이것을 시도하면 어떤 이유로 든 출력이 유효하지 않습니다. 제대로 작동하려면 중간 파일을 사용해야한다는 것을 알았습니다. 나를 위해 일한 단계는 다음과 같습니다.
Google에서 openssl for Windows 를 다운로드 하여 시작하십시오 .
C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin
C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin
C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt
이 명령을 실행하면 유효한 해시가 base64.txt 파일에 저장됩니다. 이를 복사하여 Facebook의 앱 설정에 붙여 넣습니다.
다음은 Facebook 공식 페이지 에서 제공되는 내용입니다 .
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
이 명령을 조각으로 나누겠습니다.
를 찾으십시오 "keytool.exe"
. C : 드라이브에서 검색 할 수 있습니다. "java jdk"
또는 에서 찾을 수 있습니다 "java jre"
. 여러 버전을 설치 한 경우 원하는 버전을 선택하십시오.
CMD 프롬프트를 열고 찾은 위의 디렉토리로 이동하십시오 "keytool.exe"
.
"exe`"를 클립하고 Facebook 페이지에 제공된 위의 명령을 붙여 넣습니다.
OpenSSL이 입력 출력 명령에서 인식되지 않는다고 입력하면 오류가 발생합니다. 해결 방법 : OpenSSL 에서 "Openssl"을 다운로드하십시오 (64 비트 시스템 인 경우 openssl-0.9.8e X64를 다운로드 해야 함 ). 압축을 풀고 어디서나 저장하십시오 ... OpenSSl
폴더 의 C : 드라이브에 저장했습니다.
파이프 뒤에있는 "|"위치에서 OpenSSL 오류가 발생한 위 명령에서 openssl을 "C : \ OpenSSL \ bin \ openssl"로 바꾸십시오.
비밀번호를 묻는 프롬프트가 표시되면을 입력하십시오 android
.
그리고 당신은 당신의 해시 키를 얻을 것이다. 추가 단계는 Facebook 페이지를 다시 참조하십시오.
이 코드를 onCreate
활동에 추가 하면 logCat 의 KeyHash 태그 아래에 해시가 인쇄됩니다.
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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
계정에 여러 개의 해시 키를 추가 할 수 있으므로 디버그에서 실행중인 경우 릴리스 모드에서 다시 실행하는 것을 잊지 마십시오 .
Android 키 해시 코드를 얻으려면 다음 단계를 수행하십시오.
cd C:\Program Files\Java\jdk1.6.0_26\bin
keytool -export -alias myAlias -keystore C:\Users\
사용자 이름 만 입력 하십시오\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
myKeyStore
릴리스 키 경로를 지정하십시오. 위의 코드는 디버그 키를위한 것입니다.
내가 찾은 가장 간단한 해결책은 다음과 같습니다.
로그에서 다음과 같은 줄을 찾으십시오.
04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch.
Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
application settings. Check your application settings at
http://www.facebook.com/developers
"abcdefgHIJKLMN + OPqrstuvwzyz"를 복사하여 Facebook Android Key Hash 영역에 붙여 넣습니다.
KeyHash: XWwXXXXX/5xxxxxxxxxxx=
로그에서 이것을보고 나를 도와 주었다!
SHA-1 키에서 키 해시를 얻을 수 있습니다. 이미지 아래 Play 스토어에서 SHA-1 (Signed APK) 키를 가져와야하는 것이 매우 간단합니다.
이제 SHA-1 키를 복사 하여이 웹 사이트 http://tomeko.net 에서 붙여 넣으십시오. 아래 이미지를 확인하여 키 해시를 얻으십시오.
나는이 방법으로 리눅스 OS 및 Windows OS에 .
keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64
경로로 별칭 이름 과 키 저장소를 친절하게 변경하십시오. 요구 사항으로 사용하여 하십시오.
터미널은 Keystore의 비밀번호 를 요구 합니다 . 동일한 키 저장소에 비밀번호 를 제공해야합니다. .
마지막으로 Release Hashkey를 얻게됩니다 됩니다.
해시 해제 단계 :
keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64
경로 이름을 요구 사항으로 사용하여 별칭 이름 과 키 저장소를 변경 하십시오.
터미널은 Keystore의 비밀번호 를 요구 합니다 . 동일한 키 저장소에 비밀번호 를 제공해야합니다 .
마지막으로 Release Hashkey를 얻게 됩니다.
끝난
여기에서 Windows 용 openSSL을 다운로드하십시오 여기에서 64 비트 및 32 비트를 찾을 수 있습니다
다운로드 한 파일을 추출하십시오
C : \ Users \ username \ .android \ debug.keystore
keytool -exportcert -alias androiddebugkey -keystore C : \ 사용자 \ 사용자 이름 .android \ debug.keystore | "C : \ openSSL \ bin \ openssl"sha1-이진 | "C : \ openSSL \ bin \ openssl"base64
android
하면 24 자리 해시가 a
제공 되고 타이핑 하면 28 자리 해시가 제공 됩니다 . 왜 그런지 모르겠다!
안드로이드 사이트에 설명 된 절차와 같이 서명 된 안드로이드 용 앱의 키 도구로 키 저장소를 생성 한 다음 cygwin을 설치해야하며 Google 코드 에서 openssl을 설치 한 다음 다음 명령을 실행하면 해시가 표시됩니다 Android 용 키를 누른 다음 해시 키를 작성한 페이스 북 애플리케이션에 넣습니다. 그런 다음 게시 벽 ( "publish_stream")에 대한 Android 애플리케이션을 통해 페이스 북 애플리케이션에 액세스 할 수 있습니다.
$ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1-이진 | openssl base64
cygwin에서 위의 명령을 실행해야합니다.
openSSL 다운로드 -> 설치 -> 일반적으로 C : \ OpenSSL에 설치됩니다 .
그런 다음 cmd를 열고 입력하십시오.
cd../../Program Files (Enter)
java (Enter)
dir (Enter)
cd jdk1.6.0_17 (varies with jdk versions) (Enter)
jdk 버전을 확인하려면 C : / program files / java / jdk_version으로 이동하십시오.
cd bin (enter)
keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)
안드로이드 비밀번호를 묻습니다.
기본 활동 파일을 열고 아래 언급 함수를 작성하십시오.
try {
PackageInfo info = getPackageManager().getPackageInfo(
"your.application.package.name",
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 (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
1.1 응용 프로그램을 실행하면 응용 프로그램에 대한 해시 키가 생성됩니다.
이제 log cat을 열고 "KeyHash"로 검색하고 해시 키를 복사하십시오.
해시 키를 생성하면이 기능을 제거 할 수 있습니다.
1) 응용 프로그램에 서명하는 키를 만들고 별칭을 기억하십시오.
2) OpenSSL을 설치하십시오.
3) OpenSSL의 bin 폴더를 경로에 넣으십시오.
4) FB-Android-SDK 페이지의 "싱글 사인온 설정"에 언급 된 단계에 따라 해시 키를 생성하십시오. 올바른 별명 및 키 저장소 파일 이름을 입력하십시오.
5) Facebok에서 응용 프로그램을 만들고 모바일 장치 탭에서이 해시 키를 입력하십시오.
페이스 북 개발자 사이트의 공식 문서 :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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 (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
키 해시를 제공하지만 여전히 키 해시가 저장된 키 해시와 일치하지 않습니다.
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
이것은 나를 위해 일했다 ...
단계 :
1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
.................... give proper debug.keystore path and openSSL path ..
4) Finley it may be ask u password .. so give password -> android ...
5) you will get 28 characters that will be your has key
리눅스
터미널 열기 :
디버그 빌드
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
".android"폴더에서 debug.keystore 를 찾아 데스크탑 에서 복사하여 붙여넣고 위의 명령을 실행하십시오.
릴리스 빌드
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
참고 : 두 경우 모두 암호를 요구해야합니다. 암호를 요구하지 않으면 명령에 문제가 있음을 의미합니다.
Android 애플리케이션의 경우
이 코드는 Facebook 통합을 위해 Android 애플리케이션에서 해시 키를 가져 오는 데 사용됩니다. 모든 장치를 테스트했으며 작동합니다. 이 코드의 패키지 이름 만 변경하십시오.
private void facebookHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashCode = Base64.encodeToString(md.digest(), Base64.DEFAULT);
System.out.println("Print the hashKey for Facebook :"+hashCode);
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
릴리스 키의 해시를 생성하려면 릴리스 키 별명과 키 저장소 경로를 대체하여 Mac 또는 Windows에서 다음 명령을 실행하십시오.
Windows에서는 다음을 사용하십시오.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
이 명령은 28 개의 characher 문자열을 생성해야합니다. 그 기억 복사 및 붙여 넣기를이 릴리스 키 하여 Facebook 앱 ID의 Android 설정에 저장하십시오.
이미지 : fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png
https://developers.facebook.com/docs/android/getting-started#release-key-hash 및 http://note.taable.com 에서 참조하십시오.
kotlin에서 프린트 키 해시에 사용
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
안드로이드 스튜디오에서도 광산을 해결했지만 약간 다른 접근 방식으로 해결했습니다.
Android Studio에서 SHA-1 값을 얻으려면
SHA-1 값은 다음과 같습니다. CD : A1 : EA : A3 : 5C : 5C : 68 : FB : FA : 0A : 6B : E5 : 5A : 72 : 64 : DD : 26 : 8D : 44 : 84
http://tomeko.net/online_tools/hex_to_base64.php 를 열어 SHA1 값을 base64로 변환하십시오. Facebook에서 생성 된 해시 "******************** ="를 가져 와서 키 해시를 페이스 북 앱 콘솔에 복사해야합니다.
이 답변의 일부는 여기에서 가져온 것입니다 Github 링크
복잡한 방법 과 쉬운 방법에는 두 가지가 있습니다.
방법 하나 :( 약간 복잡한)
먼저 다운로드해야 모든 SSL을 64bit
하거나 32bit
따라, 포함하는 이름으로 파일을 다운로드 기억 e
버전 코드 후 openssl-0.9.8e_X64.zip 또는 openssl-0.9.8e_WIN32.zip 하지으로 k
버전 코드 후,
AndroidStudio / jre / bin 디렉토리에 배치하십시오. 위치를 모르는 경우 Android 스튜디오 바로 가기를 마우스 오른쪽 단추로 클릭하여 다음 디렉토리를 찾을 수 있습니다.
이제 두 곳의 필수 항목을 한곳에서 관리했지만 여전히 경로를 찾아야 debug.keystore
합니다 "C:\Users\yourusernamehere\.android\debug.keystore"
.
참고 앱이 이미 게시되었거나 게시 예정인 경우 게시 서명 키 저장소를 사용하십시오. 개발 모드에서 테스트중인 경우에만 디버그, 키 소트를 사용할 수 있습니다
모든 것이 설정되면 해시 키 생성을 위해 실행하려는 명령을 정렬 base64 format
하면 명령은 다음과 같습니다.
keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64
기본적으로 android 인 debug.keystore의 비밀번호를 입력하라는 메시지가 표시됩니다. 당신이 당신의 자신의 키를 사용하는 경우 암호도 당신의 것입니다. 모든 것이 예상대로 진행되면 출력이 다음과 같이 보일 것입니다.
두 번째 방법 (각각 쉬운 방법)
위의 모든 절차를 거치지 않으려면 다음 방법을 사용하여 haskey를 기록하십시오.
private void printKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("KeyHash:", e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", e.toString());
}
}
산출:
가장 좋은 방법은 다음 코드를 사용하는 것입니다.
private void getHashKey(String pkgName)
{
try
{
PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = Base64.encodeBytes(md.digest());
_hashKey_et.setText(hashKey);
Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
}
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
그러나 Facebook 앱의 HashKey를 생성하는 간단한 도구가 없다는 사실에 너무 실망했습니다. Openssl과 Keytool을 사용하거나 서명에서 해시를 가져 오는 코드를 사용해야 할 때마다 ...
그래서 나는 당신을 위해 그 일을 할 간단한 KeyGenTool을 썼습니다 : -> Google Play의 KeyGenTool <-
즐겨 :)
나는 명심해야 할 작은 실수를했다. 키 저장소를 사용하는 경우 androiddebugkey가 아닌 별명을 지정하십시오 ...
나는 내 문제를 해결했다. 이제 Facebook이 기기에 설치되어 있으면 여전히 내 앱이 Facebook 로그인 통합에 대한 데이터를 가져옵니다. 해시 키만 신경 쓰십시오.
아래를 참조하십시오.
C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64
그런 다음 키를 누르면 Enter비밀번호를 묻는 메시지가 표시되고 Android가 아닌 키 저장소 비밀번호를 입력합니다.
멋있는.
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.text.Editable;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button btn;
EditText et;
PackageInfo info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
et=(EditText)findViewById(R.id.editText1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
//String something = new String(Base64.encodeBytes(md.digest()));
et.setText("" + something);
Log.e("hash key", something);
}
} catch (NameNotFoundException e1) {
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
}
});
}
}
해시 키를 얻는 Kotlin 코드
private fun logHashKey() {
try {
val info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNING_CERTIFICATES);
for (signature in info.signingInfo.signingCertificateHistory) {
val md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
val something = Base64.getEncoder().encodeToString(md.digest());
Log.e("hash key", something);
}
} catch (e1: PackageManager.NameNotFoundException) {
Log.e("name not found", e1.toString());
} catch (e: NoSuchAlgorithmException) {
Log.e("no such an algorithm", e.toString());
} catch (e: Exception) {
Log.e("exception", e.toString());
}
}
빌드 및 설정에 따라 키가 변경되므로 디버그 및 릴리스 환경에서 키를 생성하는 것을 잊지 마십시오.
이 시도 :
1) 명령 줄을 사용하여 해시 키 가져 오기 (공식 문서 : https://developers.facebook.com/docs/android/getting-started )
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64
또는
2) 코드를 사용하여 해시 키 가져 오기
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Hask Kay generation
GetKeyHase();
}
private void GetKeyHase() {
try {
PackageInfo info = getPackageManager().getPackageInfo("ADD YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = (MessageDigest.getInstance("SHA"));
md.update(signature.toByteArray());
String hashkey_value = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", hashkey_value);
//check you logcat hash key value
}
}catch (Exception e) {
Log.e("exception", e.toString());
}
}