Android-Facebook 앱의 주요 해시
저는 안드로이드 앱을 만들고 있는데, 페이스북 포스팅 기능을 통합하고 싶습니다.Facebook-Android SDK를 다운받아서 readme.md(텍스트 파일)을 받았는데, 거기에 Android용 키 해시가 생성된다고 나와 있습니다.어떻게 생성합니까?
다음은 단계입니다.
구글 코드에서 openssl 다운로드(64비트 머신을 사용하는 경우 최신 버전이 아닌 openssl-0.9.8e X64를 다운로드해야 합니다)
압축을 풉니다. C:/에 OpenSSL 폴더를 만들고 추출된 코드를 여기에 복사합니다.
디버깅을 검출합니다.keystore 파일 경로.찾을 수 없는 경우 C:/에서 검색을 수행하고 다음 단계의 명령에서 경로를 사용합니다.
키툴을 검출합니다.exe path를 입력하고 명령어프롬프트에 있는 dir/로 이동하여 이 명령을 1줄로 실행합니다.
$ keytool - exportcert - alias Androiddebugkey - keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\opensl" sha1 - binary |"C:\OpenSSL\bin\opensl" base64
- 패스워드를 입력해, 안드로이드를 입력해 주세요.
- 그게 다야키보드를 받게 됩니다.
[EDIT 2020] -> 여기서 완전히 추천합니다.Android Studio를 사용하는 것이 훨씬 쉽고, 빠르고, 코드를 쓸 필요가 없습니다.아래의 것은 과거 이클립스 시절로 돌아갔습니다:)
이 코드는 어떤 액티비티에서도 사용할 수 있습니다.디버깅 키인 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());
}
키를 알고 나서 코드를 삭제할 수 있습니다.
Windows 및 Mac OS X용 작은 도구를 만들었습니다.키스토어 파일을 넣고 해시키를 가져오면 돼
기본 디버깅이 필요한 경우.기본 에일리어스와 비밀번호를 사용합니다.그렇지 않으면 자체 키스토어 파일과 값을 사용합니다.
확인하거나 Windows 버전을 다운로드하거나 Mac OS X 버전을 다운로드하십시오(Dev-Host가 다운될 수 있음).링크가 끊어지면 저와 제가 해결하겠습니다.)
도움이 됐으면 좋겠는데...
2014년 12월 31일 - EDIT : 호스트를 AFH로 변경.링크가 끊어지면 알려주세요.
2013년 11월 21일 - 편집:
사용자의 요청에 따라 기본 키스토어 위치와 DONATE 버튼을 추가하였습니다. 제가 도와드렸으면 얼마든지 사용하세요.:)

현재 Facebook의 Android Tutorial에 있는 설명은 Windows에서 제대로 작동하지 않습니다.이 예에서는 keytool 출력을 openssl로 파이핑하는 방법을 보여 줍니다만, Windows 로 이것을 시도하면, 어떠한 이유로 출력이 무효가 됩니다.나는 그것이 제대로 작동하기 위해서는 중간 파일을 사용해야 한다는 것을 알았다.다음은 나에게 효과가 있었던 단계입니다.
먼저 Google에서 Windows용 openssl을 다운로드합니다.
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: 라이 c c c c c c c c c c 。은 '아까운 이야기'에 있습니다."java jdk"★★★★★★★★★★★★★★★★★」"java jre"여러 버전을 설치한 경우 원하는 버전을 선택하십시오.CMD가 위 합니다.
"keytool.exe".exe를 클리핑하여 페이스북 페이지에 있는 위의 명령어를 붙여넣습니다.
입력 시 OpenSSL이 input output 명령어로 인식되지 않는다는 오류가 나타납니다.해결책 : OpenSSL에서 "Opensl"을 다운로드합니다(64비트 머신을 사용하는 경우 openssl-0.9.8e X64를 다운로드해야 합니다).추출하여 아무 곳에나 저장...C: 드라이브에 저장했습니다.
OpenSSl표시OpenSSL 오류가 발생한 위의 명령어 openssl을 "C:"로 바꿉니다.\OpenSSL\bin\opensl"이 파이프 "|" 뒤에 표시됩니다.
"비밀번호 입력"을합니다.
android.
그리고 해시키를 받게 될 거야그 외의 순서에 대해서는, Facebook 페이지를 참조해 주세요.
키 해시는 SHA-1 키에서 얻을 수 있습니다.SHA-1(Signed APK) 키를 Play Store에서 아래 이미지를 확인하는
것은 매우 간단합니다.
이 SHA-1 키를 복사하여 이 웹 사이트 http://tomeko.net에 붙여넣어 키 해시를 얻습니다.
를 에 추가합니다.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 키 해시 코드를 가져오려면 다음 단계를 수행하십시오.
- 여기에서 OpenSSL for Windows 다운로드
- 이제 C 드라이브에 압축을 풉니다.
- CMD 프롬프트 열기
- 「」라고 입력합니다.
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 - 다 했어요.
제가 찾은 가장 간단한 해결책은 다음과 같습니다.
- 로그캣 열기
- Android SDK를 사용하여 Facebook에 접속합니다.
로그에서 다음과 같은 행을 찾습니다.
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"abcdefg" 복사HIZKLMN+OPqrstuvwzyz"를 클릭하여 Facebook Android Key Hash 영역에 붙여넣습니다.
Linux OS 및 Windows OS에서는 다음과 같이 처리했습니다.
Linux:
- Opensl 다운로드
- 오픈 터미널
keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64
필요에 따라 Alias Name 및 Keystore 경로를 변경해 주십시오.
터미널에서 키스토어의 비밀번호를 요구합니다.동일한 Keystore에 대한 비밀번호를 입력해야 합니다.
마지막으로 Release Hashkey를 얻을 수 있습니다.
Windows:
릴리스 해시키 순서:
- 64비트 OS용으로 다운로드한Opensl 다운로드 (여기서 다운로드)자세한 내용은 이쪽에서 확인하실 수 있습니다.
- 다운로드한 zip 파일을 C:\ 드라이브에만 압축을 풉니다.
- 명령 프롬프트 열기
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
필요에 따라 Alias Name 및 Keystore 경로를 변경해 주십시오.
주의:
**** 사이에 표시된 위치에 상세 내용을 기입해 주십시오.터미널에서 키스토어의 비밀번호를 요구합니다.동일한 Keystore에 대한 비밀번호를 입력해야 합니다.
마지막으로 Release Hashkey를 얻을 수 있습니다.
다 했어요.
Windows용 openSSL 다운로드는 여기서 64비트 및 32비트를 찾을 수 있습니다.
다운로드한 파일을 추출하다
- 폴더 이름 만들기 열기C 드라이브의 SSL
- 추출된 모든 항목을 복사하여 열다SSL 폴더(bin, include, lib, openssl.cnf)
- 안드로이드 디버깅키스토어를 가져옵니다.기본 위치는 다음과 같습니다.
C:\Users\Username\.android\debug.키스토어
- 이제 명령 프롬프트를 가져와 이 코드를 붙여넣습니다.
keytool -exportcert -alias Androiddebugkey -keystore C:\Users\사용자명.Android\param.keystore | "C:\openSSL\bin\opensl" sha1 -binary | "C:\openSSL\bin\opensl" base64
- Enter 키를 누르면 28자리 키코드가 표시됩니다.
Android 사이트에서 설명한 절차와 같이 서명된 안드로이드용 앱용 키툴로 키스토어를 생성하여 sygwin을 설치한 후 구글 코드에서 openssl을 설치하고 다음 명령을 실행하면 Android용 해시키를 가져와 해당 해시키를 페이스북 애플리케이션에 넣을 수 있습니다.작성했습니다.Android 어플리케이션으로 Facebook 어플리케이션에 접속하여 벽('publish_stream')을 게시할 수 있습니다.
$ keytool - exportcert - exportcert alias_name - keystore sample_keystore.keystore | openssl sha1 - filename |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)
Android 비밀번호 입력을 요구할 것입니다.
메인 액티비티 파일을 열고 아래 언급 기능을 작성하기만 하면 됩니다.
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 응용 프로그램을 실행하면 응용 프로그램의 해시 키가 생성됩니다.
이제 로그 cat을 열고 "Key Hash"로 검색하여 해시 키를 복사합니다.
해시 키를 생성하면 이 함수를 제거할 수 있습니다.
1)에일리어스를 한다.1) 에일리어스, 에일리어스를 한다.
2) OpenSSL 설치
.3) OpenSSL의 bin 폴더를 합니다.
4) FB-Android-SDK 페이지의 "Single Sign-On 설정"에 기재된 절차에 따라 해시 키를 생성합니다.올바른 에일리어스와 키스토어 파일명을 입력해 주세요.
에서 이Key.5) Facebok을 합니다.
Facebook 개발자 사이트 공식 문서:
@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) {
}
Android 어플리케이션의 경우
이 코드는 Android 어플리케이션에서 Facebook 통합을 위한 해시 키를 얻기 위해 사용됩니다.모든 디바이스를 테스트하고 동작하고 있습니다.이 코드의 패키지 이름만 변경:
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) {
}
}
사용할 수 있는 방법은 두 가지가 있습니다.
방법 1 : (리틀 콤플렉스)
먼저 ssl을 다운로드해야 합니다. 64bit ★★★★★★★★★★★★★★★★★」32bit이 할 때는 반드시 .e버전 코드 openssl-0.9.8e_X64.zip 또는 openssl-0.9.8e_WIN32.zip 미사용k코드 에 있는 버전 코드
Android Studio/jre/bin 디렉토리에 배치하면 위치를 모를 경우 다음과 같이 Android 스튜디오 바로 가기를 마우스 오른쪽 버튼으로 클릭하면 이 디렉토리를 찾을 수 있습니다.
두 한 것을 한 했지만, 의 길을 .debug.keystore항상 '아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,"C:\Users\yourusernamehere\.android\debug.keystore",
주의: 어플리케이션이 이미 공개되었거나 공개가 임박한 경우 debug, keyotre를 사용할 수 없는 개발 모드에서 테스트하는 경우에만 게시 서명 키스토어를 사용하십시오.
모든 것이 셋업되었으므로 해시 키 생성을 위해 실행하려는 명령어를 에서 배열합니다.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
디버깅용 패스워드를 입력하도록 요구됩니다.기본적으로는 안드로이드인 키스토어입니다.자신의 키를 사용하고 있는 경우는, 패스워드도 자신의 것이 됩니다.모든 것이 기대했던 대로 잘 되면 결과는 이렇게 보일 것입니다.그것이 도움이 되기를 바랍니다.
두 번째 방법(각각 쉬운 방법)
위의 모든 절차를 수행할 필요가 없는 경우 다음 방법을 사용하여 해시 키를 기록합니다.
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());
}
}
출력:
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
Linux의 경우
터미널 열기:
디버깅 빌드의 경우
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
디버깅을 찾을 수 있습니다..displays 폴더에서 keystore를 복사하여 바탕화면에 붙여넣고 위의 명령을 실행합니다.
릴리즈 빌드의 경우
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
메모: 두 경우 모두 비밀번호를 입력해야 합니다.패스워드를 입력하지 않으면 명령어가 잘못되었음을 의미합니다.
비슷한 문제에 대한 답변에서 나는 이것이 나에게 효과가 있다는 것을 알았다.
- 복사하다
apkname.apk"Java\jdk1.7.0_79\bin" 폴더에 대한 해시를 알고 싶은 파일 - 이 명령어 실행
keytool -list -printcert -jarfile apkname.apk - 복사하다
SHA1값을 매기고 이 사이트를 사용하여 변환합니다. - 변환된 Keyhash 값 사용(예: zaHqo1xcaPv6CmvlWnJk3SaNRIQ=)
가장 심플한 솔루션:
- 해시 키를 추가하지 말고 다른 모든 것을 구현합니다.
- Facebook 로그인을 누르면 "Invalid key hash"라는 오류가 나타납니다.키 해시 "xxx"가 저장된 키와 일치하지 않습니다. ..."
- Facebook 앱 대시보드를 열고 해시 "xx="("오류 + "=" 기호에서 xxx")를 추가합니다.
릴리스 키의 해시를 생성하려면 릴리스 키 에일리어스와 키스토어 경로를 대신하여 Mac 또는 Windows에서 다음 명령을 수행합니다.
Windows 의 경우는, 다음을 사용합니다.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
이 명령어는 28 문자의 문자열을 생성합니다.이 릴리스 키 해시를 복사하여 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에서도 내 문제를 해결했지만 조금 다른 접근법으로 해결했다.
Android Studio에서 SHA-1의 가치를 얻기 위해.
- [ Gradle ]
- [보고서 서명] (서명)]을 클릭합니다.
- 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이 생성한 해시 "**************"를 가져와 키 해시를 Facebook 앱 콘솔에 복사하는 것입니다.
이 답변의 일부는 여기 Github Link에서 가져온 것입니다.
Android Studio에서는 오른쪽 사이드바 패널 "Gradle"을 클릭하여 gardel 패널을 표시하면 됩니다.-YOURAPPNAME ---Android --(두 번 클릭) signingReport (Gradle Daemon을 시작하려면)
다음과 같은 결과가 표시됩니다.
Config: debug
Store: C:\Users\username\.android\debug.keystore
Alias: AndroidDebugKey
MD5: C8:46:01:EA:36:02:D1:21:1B:23:19:91:D4:32:CB:AC
SHA1: 38:AB:4C:01:01:D7:62:E0:61:D1:9F:52:04:0C:E5:07:4E:E4:9B:39
SHA-256: 1B:8C:DC:35:48:10:01:2C:1F:BD:01:64:F1:01:06:01:60:01:A6:8B:10:15:2E:BF:7B:C4:FD:38:4C:C1:74:01
Valid until: Saturday, February 12, 2050
SHA1 복사:
38:AB:4C:01:01:D7:62:E0:68:D1:9F:52:04:0C:E5:07:4E:E4:9B:39
이 페이지로 이동하다
SHA1을 붙여넣고 Facebook 키 해시 코드를 생성합니다.
가장 좋은 방법은 다음 코드를 사용하는 것입니다.
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();
}
}
하지만 페이스북 앱용 HashKey를 생성할 수 있는 간단한 툴이 없다는 사실에 매우 실망했습니다.Opensl과 Keytool을 가지고 놀거나 시그니처로부터 해시를 얻기 위해 코드를 사용해야 할 때마다...
그래서 간단한 KeyGenTool을 작성했습니다.KeyGenTool on Google Play <->
즐기세요 :)
나는 명심해야 할 작은 실수를 했다.키스토어를 사용하는 경우 Android 디버그키가 아닌 별칭 이름을 지정하십시오.
나는 내 문제를 해결했다.내 기기에 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
그런 다음 - 키를 누르면 암호를 묻는 메시지가 표시되고 Android가 아닌 키 저장소 암호를 입력할 수 있습니다.
멋져.
여기 자마린 버전이 있습니다.
private void printKeyHash()
{
try
{
PackageInfo info = PackageManager.GetPackageInfo(PackageName, PackageInfoFlags.Signatures);
foreach (var signature in info.Signatures)
{
MessageDigest md = MessageDigest.GetInstance("SHA1");
md.Update(signature.ToByteArray());
var hash = Base64.EncodeToString(md.Digest(), Base64Flags.Default);
Log.Debug("KeyHash:", hash);
}
}
catch (PackageManager.NameNotFoundException e)
{
}
catch (NoSuchAlgorithmException e)
{
}
}
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());
}
}
});
}
}
언급URL : https://stackoverflow.com/questions/4388992/key-hash-for-android-facebook-app
'programing' 카테고리의 다른 글
| Go 문자열을 인쇄하지 않고 포맷하시겠습니까? (0) | 2023.04.15 |
|---|---|
| 빈 디렉터리 찾기 (0) | 2023.04.15 |
| 대소문자를 구분하지 않는 'Contains(string)' (0) | 2023.04.15 |
| 회선 끝 설정 변경 방법 (0) | 2023.04.15 |
| 다른 응용 프로그램에서 열려 있는 파일을 열려면 어떻게 해야 합니까? (0) | 2023.04.15 |




