유효하지 않은 키 해시와 Android Facebook 통합


194

내 앱 중 하나에서 Facebook에서 데이터를 가져와야합니다 ... 나는 이것을하고 있습니다 :

앱 ID를 만들었습니다 . 성공적으로 로그인하지만 로그 아웃 한 후 로그인하면 다음과 같이 표시됩니다.

잘못된 키 해시 오류 Facebook 스크린 샷

내가 뭘 잘못하고 있니? Facebook SDK를 사용하고 있습니다 ... 전화기에 Facebook을 설치했습니다 ... 에뮬레이터 내에서 제대로 실행되고 있지만 내장 Facebook 응용 프로그램이 설치되어 있지 않습니다.

이것은 내 코드입니다.

if (FB_APP_ID == null) {
    Builder alertBuilder = new Builder(this);
    alertBuilder.setTitle("Warning");
    alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                            "specified before running this example: see App.java");
    alertBuilder.create().show();
}

// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);

// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
    dispatcher.runHandler("stream");
}
else {
    dispatcher.runHandler("login");
}

12
하지만 처음 로그 아웃 한 후 로그인하면 제대로 작동하지 않습니다.
Android

1
예 .. try {PackageInfo info = getPackageManager (). getPackageInfo ( "com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (서명 서명 : info.signatures) {MessageDigest md = MessageDigest.getInstance ( "SHA"); md.update (signature.toByteArray ()); Log.d ( "KeyHash :", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android

1
나는이 문제를 여기에 뿌렸다! 여기는 멋진 것으로 이해했습니다! [ stackoverflow.com/questions/5306009/… ] [1]
Madi

3
@Android 비록 이것이 오래되었지만 이것을 언급해야합니다. 사용자가 로그 아웃 한 후 로그인 할 때 발생하지 않습니다. 디버깅하는 동안 앱을 다시 설치하면 두 번째로 디버깅 할 때 발생합니다. 따라서 해시가 변경됩니다. 서명 된 앱 (제작 준비)의 경우에는 발생하지 않습니다
Nilay Vishwakarma

1
Facebook 앱을 제거해도 같은 오류가 발생합니까? 두 대의 전화기에서 테스트했으며이 오류는 Facebook 앱이 설치된 경우에만 발생합니다.
Jaime Montoya

답변:


274

생성 된 해시 키가 잘못되었습니다. 두 단계를 사용하여 해시 키를 얻을 수 있습니다.

하나는 명령 프롬프트를 통하는 것입니다. 다른 하나는 코딩을 통하는 것입니다. 명령 프롬프트를 통한 해시 키는 처음에만 작동합니다. 이유를 모르겠습니다. 나도 같은 문제가 있습니다. 그래서 프로그래밍 방식으로 시도했습니다.

다음과 같이하세요:

에 다음 코드를 붙여 넣습니다 oncreate().

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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) {
}

위의 코딩에서 패키지 이름으로 "com.example.packagename"을 반드시 수정하십시오 (Android 매니페스트 파일에서 패키지 이름을 찾을 수 있음).

응용 프로그램을 실행하십시오. 위의 코드를 붙여 넣은 활동으로 이동하십시오. LogCat 파일에서 "KeyHash"를 검색하십시오. 키 해시를 찾을 수 있습니다. 키 해시를 복사하고 Facebook 애플리케이션 대시 보드 페이지로 이동하십시오. 설정으로 이동하여 아래 이미지와 같이 세부 정보를 입력하십시오.

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

위 단계를 완료하면 앱을 다시 시작하십시오. 이제 Facebook에 로그인 할 수 있습니다. 키 해시에 대한 자세한 내용은 링크를 확인 하십시오 .

설정 페이지에 잘못된 정보를 추가하면 오류가 발생합니다. 올바른 정보를 사용하십시오. 또한 일반인 (귀하 이외의 사람)이 응용 프로그램을 사용해야하는 경우 권한을 활성화해야합니다 (설정 옆의 "상태 및 검토"에서 "예"변경) .


20
이런 식으로 디버그 키 저장소에 대한 키 해시를 얻었을 가능성이 큽니다. 프로덕션 모드에 필요한 작업은 아니지만 개발 모드에서 작동합니다. 적어도 내 프로덕션 앱에서는 작동하지 않습니다.
Liangjun

3
시간을 절약 해주셔서 감사합니다 ... 페이스 북 공식 문서를 읽지 말아야합니다
DjP

정말 고마워요!
KinGPinG

이 코드로 Hey PackageInfo info = getPackageManager (). getPackageInfo ( "com.example.packagename", PackageManager.GET_SIGNATURES); for (서명 서명 : info.signatures) {MessageDigest md = MessageDigest.getInstance ( "SHA"); md.update (signature.toByteArray ()); Log.d ( "KeyHash :", Base64.encodeToString (md.digest (), Base64.DEFAULT)); 다른 해시 키는 내가 내 해시 키는 달랐다 창에 cmd를 명령을 실행할 때 동시에 전송되고 난 FB에 추가하지만 한의 프로그램에 코드를 여전히 로그 쇼 해시
사가르 Devanga

1
많은 시간을 절약했습니다. 여전히 최고입니다. 키해시에 대한 자세한 정보를 확인하고이를 페이스 북 개발자 페이지에 복사하여 붙여 넣으십시오. 수동으로 잘못 입력하지 마십시오! 또한 앱을 제거하고 설치할 때마다 키해시가 변경됨을 이해하십시오.
sanjeev

190

Google Play 앱 서명을 사용하는 경우 :

Google Play Console에서 앱 서명 섹션을 열고 앱 서명 인증서 아래 에서 SHA-1 해시를 가져옵니다 . 그런 다음 이 도구를 사용 하여 Base64 로 변환하십시오 . 16 진수-> base64 문자열 디코더

콘솔 스크린 샷

Base64 스크린 샷으로 변환


14
경! 당신은 생명의 은인입니다! 많은 사랑. 페이스 북 콘솔에 로컬 릴리스 키의 해시를 배치하는 동안 Play 스토어의 서명을 사용하고있었습니다.
Taha Rushain

4
당신은 내 인생을 저장, 내가 반응 사용하고, 아무도 플레이 스토어 앱 서명에 대해 언급
TomSawyer

7
감사합니다! 효과가있다! 당신은 또한 그것을 위해 터미널 명령을 사용할 수 있습니다 : echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
YURIY Seredyuk

4
이것이 프로덕션 환경에서 수행해야하는 것입니다 !!! 엄지 손가락!
Bikey

정확히 내가 알고 싶었던 것. 앱을 제거하고 설치할 때마다 디버그에서 해시 키가 변경됩니다. 당신은 ppl 인생을 더 쉽게 감사합니다!
sanjeev

124

이 문제가 발생하면이 키를 developer.facebook.com에 넣으십시오 .

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

그런 다음 앱이 developer.facebook.com에 게시 되어 있는지 확인하십시오 .

이 녹색 원은 앱이 실행 중임을 나타냅니다.

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

그렇지 않은 경우 다음 두 단계를 수행하여 앱을 활성화하십시오.

1 단계 애플리케이션으로 이동 → 설정연락처 이메일 추가 및 변경 사항 저장을 적용합니다.

2 단계 앱 검토 옵션으로 이동 하여이 토글이 인지 확인하십시오 . 스크린 샷을 추가했습니다 :

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

참고 : 해시 키를 복사하려면 LogCat 에서 BlueServiceQueue를 확인하십시오 .


5
전화에서 해시를 복사하는 쉬운 방법이 있습니까?
Daniel Shatz

4
@DanielShatz는 logcat에 나타납니다. 편지로 편지를 복사 한 후에 만 ​​알았습니다.
Alaa M.

4
@DanielShatz BlueServiceQueuelogcat 에서 태그 를 찾으십시오
Alaa M.

4
이 대답은 나를 위해 일했습니다. 수동으로 해시를 입력하려고 시도하면 동일한 오류가 발생했지만 문제는 소문자 L "l"대신 대문자 i "I"를 입력한다는 것입니다. 이것을 깨닫기 위해 시간이 걸렸습니다.
Markus

1
이것은 작동하지만 FB 가이 해시 키를 어디서 얻었는지 궁금합니다. 아무도 궁금하지 않습니까? 오류가 잘 작동하는 해시 키를 표시했지만 모든 명령을 사용하거나 Google 앱 서명에서 sha1을 base64로 가져 오는 경우 FB가 오류에 표시된 키를 제공했습니다 ... 어쨌든 트릭에 감사드립니다
Umar3x

82

나는 같은 문제를 겪었다. 나는 그것이 매우 작은 결함으로 인한 것이라고 확신했고, 그렇습니다!

해결책을 찾았습니다.

컴퓨터에서 디버그 해시 키를 생성 할 때 시스템 암호를 입력했습니다. 그러나 비밀번호는 다음과 같아야합니다.

키 저장소 비밀번호를 입력하십시오 ( "android"). 내 경우에는 이것이 유일한 문제였습니다.

----- 디버그 키 해시 를 생성 하려면이 명령을 사용하십시오.

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

키 저장소 비밀번호 입력 : 'android'

----- 릴리스 키 해시 를 생성하려면 이 명령을 사용하십시오.

keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64

이 명령을 실행 한 후 키 저장소 비밀번호를 제공하십시오.


5
암호로 "android"를 사용하면 나에게 적합합니다. 이것은 수수께끼입니다.
adbie

3
해시 키를 생성 할 때이 "android"를 비밀번호로 사용하십시오.
Akash Bisariya

2
Windows 시스템에서 경로 변수가 openssl \ bin 및 java .. \ bin 폴더에 올바르게 설정되어 있는지 확인하십시오. 또한 페이스 북의 명령을 사용할 수 있도록 HOMEPATH 변수를 설정하십시오.
KawaiKx

1
적어도 Mac에서는 Java JDK를 설치해야 작동합니다. 그렇지 않으면 위의 디버그 명령이 여전히 해시를 생성하지만 해시가 작동하지 않으며 비밀번호를 묻는 메시지가 표시되지 않습니다. JDK를 설치하면 매력처럼 작동했습니다.
lejonl

1
이 답변은 올바른 답변이어야합니다
Evan Ngo

20

나는 같은 문제를 경험했다. 이 이상한 행동에 대한 가능한 이유에 대해 짧은 연구를 한 결과 다음을 발견했습니다.

  • 새 Facebook 앱을 처음 실행하는 동안 키 해시를 지정하지 않아도 연결 / 로그인이 가능 합니다.

  • 나에게 페이스 북이 제공 한 튜토리얼 은 잘못된 구성 을 제공했기 때문에 올바른 키 해시를 생성하지 못했습니다 . 실행할 때 :

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

HOMEPATH키 저장소의 존재 여부 등 모든 속성을 확인하십시오 . 암호를 제공해야 할 수도 있습니다.

  • 올바른 구성을 생성 한 것은 @Mahendran이 제안한 솔루션이었습니다 .

  • 또한 원래 게시 된 오류 ( http://i.stack.imgur.com/58q3v.png ) 가 표시되면 화면에 표시 되는 키 해시가 실제 오류 일 가능성이 큽니다 . 아무것도 작동하지 않으면 Facebook에 입력하십시오.

Windows 7 64-bit edition, Android Studio 1.2.2, JDK 7에서 모든 결과를 얻었습니다.


2
리눅스 버전 :`keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1-이진 | openssl base64`
ruX

1
장치 화면에 페이스 북으로 표시된 것을 입력하면 작동합니다. 메모
@Martin

14

Android 용 Facebook 로그인에 따르면 키 해시 값을 제공해야합니다. 이를 얻으 려면 신청서에 서명하는 데 사용되는 가 필요합니다 .

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64

1
주석을 추가하려면 프로덕션 키 저장소를 사용하십시오.
Liangjun

2
@Liangjun 실제로는 모든 키를 사용해야합니다. 그렇지 않으면 디버그 환경에서 Facbeook 로그인을 테스트 할 수 없기 때문입니다.
Pijusn

2
@Pius, 예, 실제로 두 키를 모두 사용합니다. 나는 그것을 분명히 말해야했다.
Liangjun

이 명령에 대한 오류가 발생하지만 (Java 런타임 없음, 설치 요청) 키가 여전히 유효하지만 유효하지 않으며 logcat에서 복사하여 인식 할 수 없다는 것을 붙여 넣습니다.
Cristi Băluță

8

디버그 및 릴리스에 대한 두 개의 키 해시를 작성해야합니다.

에 대한 디버그 키 해시 :

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

디버그 키 해시 소스

에 대한 릴리스 키 해시 :

OS X에서 다음을 실행 하십시오 (값으로 대체 <>) .

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Windows에서는 다음을 사용 하십시오 (값으로 대체 <>하십시오) .

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

키 해시 소스 해제


이 명령에 대한 오류가 발생하지만 (Java 런타임이 없으며 설치 요청) 여전히 키가 있지만 유효하지 않으며 작동하게하려면 logcat에서 복사하여 붙여 넣으십시오.
Cristi Băluță

어쩌면 명령 줄에서 java 및 keytool의 PATH를 설정하지 않았습니까? @ CristiBăluță
MBH

7

나는 이전의 모든 답변을 시도했지만 내 고객과의 사건에 아무런 도움이되지 않았습니다!

그런 다음 고객은 자신의 기기에 Facebook 앱이 설치되어 있음을 기억했습니다. 그는 그것을 제거한 후. 로그인이 완벽하게 작동했습니다.

해시 키가 변경되었으며 Facebook Developers Console의 이전 해시 키를 오류의 키 (위에서 제안한대로)로 교체했으며 작동합니다!

Facebook 앱 자체가 문제 일 수 있으므로 Facebook 앱이 설치된 장치와 Facebook 앱이 설치되지 않은 장치에서 두 가지 경우를 모두 파악하는 것이 좋습니다.


예, 페이스 북 앱을 장치에 설치 한 후이 오류가 발생했습니다. 그래서 현재 Facebook 개발 설정에 2 개의 해시 키를 넣었습니다.
stuckedoverflow

3
나는 당신과 매우 비슷한 상황입니다. 나에게 도움이 된 것은 FB 페이지로 이동하는 것입니다-설정-앱-목록에서 앱을 제거하십시오. 해시 키를 변경하고 fb 앱과 앱을 다시 설치하십시오. 그리고 지금은 ... 작동
anna_manzhula

4

이것이 내가이 문제를 해결 한 방법입니다.

먼저 SHA-1 값을 얻어야합니다. 이를 위해 두 가지 방법이 있습니다.

Android Studio에서 SHA-1 값을 얻으려면

  1. 딸깍 하는 소리 Gradle을
  2. 서명 보고서를 클릭하십시오
  3. SHA-1 값 복사

또는

키 저장소 파일 에서 SHA-1 값을 가져옵니다 .

keytool -list -v -keystore keystore_file_name.jks -alias key0

다음과 같이 SHA-1 값을 클립 보드에 복사하십시오.

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

16 진수-> Base64 문자열 디코더 를 열어 SHA-1 값을 Base64로 변환합니다.

이것이 Facebook에 필요한 것입니다.

생성 된 해시 "******************** ="를 가져 와서 키 해시를 Facebook 앱으로 복사하십시오.


3

나는 같은 문제를 겪고 있었다. 먼저 로그인하면 좋지만 유효하지 않은 키 해시입니다.

Unity 용 Facebook SDK가 잘못된 키 해시를 얻습니다. "C : \ Users \"사용자 ".android \ debug.keystore"에서 키를 가져오고 완벽한 세상에서는 프로젝트에서 만든 키 저장소에서 가져와야합니다. 이것이 키 해시가 등록되지 않았다고 말하는 이유입니다.

Madi가 제안한 대로이 링크 의 단계에 따라 올바른 키를 찾을 수 있습니다. 프로젝트 내의 키 저장소를 가리켜 야합니다. 그렇지 않으면 올바른 키를 얻지 못할 것입니다.


3

다음 코드는 Facebook에 대한 해시를 제공하지만 릴리스 후보 해시를 얻으려면 다음 단계를 따라야합니다.

  1. 이 코드를 복사하여 기본 활동에 붙여 넣기

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                               "com.example.packagename",
                               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) {
    }
  2. 서명 된 APK 파일을 생성 하십시오.

  3. 휴대 전화를 노트북에 연결하고 연결 상태를 유지하십시오.
  4. 릴리스 APK를 휴대폰으로 수동으로 이동하여 휴대폰에 APK 파일을 설치하고 실행하십시오.
  5. 이제 Android LogCat을 확인하십시오 (필터 KeyHash : 사용 ). Facebook의 릴리스 해시 키가 표시되어야합니다. 에 복사하여 붙여 넣기 만하면 https://developers.facebook.com/apps됩니다. 설정 상태입니다.
  6. 이제 완벽하게 작동하는 앱을 테스트 할 수 있습니다.

부호있는 apk를 생성하는 경우에만 코드가 작동합니다. 그렇지 않으면 출시 된 apk에 쓸모없는 apk hash 만 디버그합니다
abdul jalil

안녕하세요, 페이스 북 앱에 생성 된 해시 키를 주면 정상적으로 작동하지만 다른 장치에서 실행하려고하면 다시 'INVALID HASH KEY'가 표시됩니다. 페이스 북에 해시 키를 설정하여 모든 장치에서 작업 할 수있는 방법.
Deepak

2

오랜 연구 끝에 해결책을 찾았습니다.

권한을 다음과 같이 설정했습니다.

loginButton.setReadPermissions(public_profile email);

처음으로 작동했지만 Facebook에 다시 로그인하면 Invalid Hash Error가 발생했습니다 .

간단한 해결책은 위의 행을 다음과 같이 변경하는 것입니다.

loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));

그리고 그것은 행복처럼 작동했습니다!

Facebook은 잘못된 잘못된 해시 키 오류 대신 올바른 예외를 반환해야합니다.


나는 같은 문제가 있습니다. 귀하의 솔루션을 시도했지만 여전히 내 문제를 해결할 수 없습니다 @ user3663906
BekaKK

2

많은 시련 끝에 나는 이것에 대한 해결책을 발견했다. Facebook 개발자 콘솔에 디버그 및 릴리스 키를 모두 생성하고 추가했지만 여전히 오류가 발생했습니다.

나를 위해 일한 유일한 해결책은 Google에서 OpenSSL 프로그램을 제거하고 Windows 용 Win32 / Win64 OpenSSL Installer 에서 다운로드하는 것입니다.

정말 마술처럼 작동합니다.


2

이 질문에 도움이 방법을 많이에 답하고있다하더라도 난 그냥 내가했다 (구글의 해시 키는 콘솔 플레이 사용) 라팔 Maleks 대답을 따라 때 추가하고 싶어 하지 앱 서명 SHA1 키를 사용할 수, 여전히 일반있어 페이스 북에서 오류. 대신 인증서 업로드 부분 (Google Play 콘솔의 앱 서명 부분 바로 아래) 에서 SHA-1 인증서 지문을 사용해야했습니다 . 그렇지 않으면 같은 과정;

  1. Google Play Console의 인증서 업로드 섹션에서 SHA-1 인증서 지문 복사

  2. http://tomeko.net/online_tools/hex_to_base64.php를 사용하여 SHA-1을 변환하고 출력을 복사하십시오 (base64).

  3. developer.facebook.com의 Key Hashes 입력에 붙여넣고 변경 사항을 저장하십시오.

이 답변이 중복되지 않고 App Signing 인증서를 사용할 수없는 사람에게 도움이되기를 바랍니다.

이제 Facebook 로그인은 디버그 및 릴리스 모드 모두에서 내 앱에서 작동합니다.


1

다음 코드를 OnCreate 메서드에 붙여 넣습니다.

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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) {
    e.printStackTrace();
}
catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

패키지 이름을 수정하십시오. 그런 다음 LogCat 파일로 이동하여 여기에서 검색 디버그를 선택하십시오. 그런 다음 해시 키를 찾을 수 있습니다. 이제이 해시 키를 복사 한 다음 developer.facebook.app_id 사이트로 이동하여 해시 키를 편집 한 후를 누르십시오 Save. 이제 Android 프로젝트를 다시 실행하십시오. 문제가 해결 될 것이라고 생각합니다.


7
다른 사람을 반복
Beto Caldas

1

이것은 같은 문제를 가진 사람에게 도움이 될 수 있습니다.

  1. 아래 코드를 사용하여 키 해시 생성

    keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64

    keytool을 사용하는 방법

  2. Facebook 개발자의 필수 필드에 붙여 넣기

  3. Android Studio에서 메뉴 파일프로젝트 구조

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

    서명 매개 변수를 추가하십시오.

  4. 맛을 선택하십시오

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

    작성한 서명 구성을 선택하십시오.

  5. 빌드 유형을 선택하십시오

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

  6. 빌드 변형을 선택하고 빌드하십시오.

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


1

앱을 디버깅 할 때도 같은 문제가있었습니다. 첨부 된 이미지에서 무시 한 해시 (Facebook에서 말하는 이미지가 유효하지 않음)를 다시 작성하고 Facebook 개발자 콘솔에서 주요 해시에 추가했습니다. 오타 만 조심하십시오.

이 솔루션은 적절한 솔루션보다 쉬운 해결 방법과 비슷합니다.


1

키해시를 수동으로 입력하는 경우 (예 : 모바일에서 Facebook 대시 보드로) 작은 L과 대문자 I을 구분해야합니다.


1
try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "www.icognix.infomedia",
                           PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}

0

Facebook에서 사용한 것은 디버그 용 기본 비밀번호와 별칭이 아닙니다. 다음과 같이 변경해야 작동합니다.

/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

기본 비밀번호로 아무것도 변경하지 않은 경우 "android" 이어야합니다 .

build.gradle 파일에서 구성 할 수도 있습니다. 그러나 해시 생성시 동일한 별칭 비밀번호를 사용해야합니다.

android {
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}

0

올바른 답변이 많이 있습니다. 단 하나:

수신 된 해시를 빠른 시작 자습서를 통하지 않고 애플리케이션설정메인에 붙여 넣습니다 .


0

나는 같은 문제가 있었다.

Facebook 개발자 섹션에 저장된 해시 키를 생성 한 동일한 장치로 APK 파일을 빌드해야합니다.


0

나는 이것을 다음과 같이 추가하여 고쳤다 MainApplication.onCreate.

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.genolingo.genolingo",
                           PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
        KeyHash.addKeyHash(hash);
    }
}
catch (PackageManager.NameNotFoundException e) {
    Log.e("PackageInfoError:", "NameNotFoundException");
}
catch (NoSuchAlgorithmException e) {
    Log.e("PackageInfoError:", "NoSuchAlgorithmException");
}

그런 다음 Google 개발자 콘솔에 업로드 한 다음 어떤 이유로 든 완전히 다른 키 해시를 가진 파생 APK 를 다운로드했습니다 .

그런 다음 LogCat을 사용하여 새 키 해시를 결정하고 다른 사용자가 설명한 것처럼 Facebook을 추가했습니다.


0

당신이있는 거 생성 해제 키 해시가 있는지 확인하는 경우는 키 스토어와의 실제 암호를 입력 하지를 "android"가 .

이것은 내 문제였다. 디버그 릴리스가 작동했지만 릴리스 APK가 작동하지 않았습니다.


-1

활동의 onCreate () 메소드에서 아래 코드를 사용하십시오.

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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}

이 코드를 실행하십시오. 해시 키가 생성됩니다. Facebook 애플리케이션 설정에서이 KeyHash를 복사하고 변경 사항을 저장하십시오. 그런 다음 응용 프로그램에 로그인하십시오. 이것은 미래에도 완벽하게 작동합니다.


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