it-swarm-ko.com

Android Facebook 통합 키 키 해시가 된 것.

내 애플 리케이션 중 하나에서 나는 페이스 북의 데이터를 얻을 필요가있다 ... 나는 이것을하고있다 :

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

Screenshot of invalid key hash error Facebook

내가 뭘 잘못하고있어? 제발 페이스 북 SDK 를 사용하고있다 ... 나는 내 핸드폰에 페이스 북을 설치했다 ... 이것은 에뮬레이터에서 잘 돌아가고있다. inbuilt 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");
}
169
Android

생성 해시 키가 잘못되었습니다. 두 단계를 사용하여 해시 키를 가져올 수 있습니다. 하나는 명령 프롬프트를 통한 것입니다. 다른 하나는 코딩을 통한 것입니다. 명령을 통한 해시 키 처음으로 작동하는 프롬프트. 나는 그 이유를 모른다. 나는 또한 같은 문제가있다. 그래서 프로그래밍 방식으로 시도했습니다.

다음 단계를 따르십시오.

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 Manifest 파일에서 패키지 이름을 찾을 수 있습니다).

응용 프로그램을 실행하십시오. 위 코드를 붙여 넣은 활동으로 이동하십시오. "KeyHash"에 대한 logcat 검색. 키 해시를 찾을 수 있습니다. 키 해시를 복사하고 Facebook 응용 프로그램 대시 보드 페이지로 이동하십시오. 설정으로 이동하여 아래 그림과 같은 세부 정보를 입력하십시오.

enter image description here

위의 단계를 완료하면 다시 페이스 북에 로그인 할 수있는 응용 프로그램을 다시 실행하십시오. 키 해시 검사에 대한 자세한 내용은 링크

설정 페이지에 잘못된 정보를 추가하면 오류가 발생합니다. 올바른 정보를 사용하십시오. 또한 (귀하 이외의) 대중이 귀하의 응용 프로그램을 사용해야하는 경우 permission(change "yes" in the "Status & Review" next to setting) 권한을 활성화해야한다는 것을 의미합니다.

261
Mahendran Sakkarai

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

Google Play Console에서 앱 서명 섹션을 열고SHA1of응용 프로그램 서명 인증서를 입력 한 다음이 도구를 사용하여base64로 변환하십시오. http://tomeko.net/online_tools /hex_to_base64.php?lang=en

console screenshot

convert to base64 screenshot

134
Rafal Malek

이 문제를 직면하고 있다면이 키를 당신의 developer.facebook.com

enter image description here

그런 다음 앱이liveon인지 확인하십시오.

developer.facebook.com

이 녹색 원은 앱이 실시간임을 나타냅니다.

enter image description here

그렇지 않은 경우 앱을 실행하기위한이 두 단계를 따르세요.

1 단계응용 프로그램으로 이동 ->설정=> 및add Email에 연락하여 변경 사항 저장 적용

Setp 2그런 다음 이동응용 프로그램 검토옵션이 토글이 있는지 확인 예

enter image description here

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

109
Arpit Patel

나는 똑같은 문제가있다. 나는 그것이 아주 작은 잘못 때문이라고 확신했다. 그렇다. 해결책을 찾았습니다.

내 컴퓨터에서 디버그 해시 키를 생성 할 때 시스템의 암호를 입력했습니다. 그러나 암호는 다음과 같아야합니다 -
키 스토어 비밀번호 입력 : "Android"
제 경우에는 이것이 유일한 문제였습니다.

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

keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .Android/debug.keystore | openssl sha1 - 이진 | openssl base64

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

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

keytool -exportcert -alias "키 저장소의 별칭"-keystore "응용 프로그램에 서명 할 때 키 저장소에 대한 경로"| openssl sha1 - 이진 | openssl base64

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

71
Akash Bisariya

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

  • 새로운 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 비트 에디션, Android Studio 1.2.2, JDK 7 등 모든 결과를 얻었습니다.

21
Martin Doychev

따르면 안드로이드에 대한 페이스 북 로그인 , 당신은 키 해시 값을 제공해야합니다. 그것을 얻으려면 열쇠 귀하의 응용 프로그램에 서명하는 데 사용해야합니다.

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

나는 위의 모든 것을 시도했지만 고객과 나의 사건을 도왔습니다! 내 고객이 자신의 기기에 Facebook 앱을 설치했다는 사실을 기억했다. 그가 그것을 제거한 후에 로그인은 완벽하게 작동했습니다. 해시 키가 변경되었으며 페이스 북 개발자 콘솔에서 이전 해시 키를 오류의 키로 바꿨습니다 (위에서 제안한대로)! Facebook 앱 자체가 문제 일 수 있으므로 Facebook 앱이 설치된 기기와 Facebook 앱이 설치되지 않은 기기에서이 문제를보다 잘 파악하고 두 가지 경우 모두 처리 할 수 ​​있습니다.

7
Matan Dahan

하나는 Debug에, 다른 하나는 Release에 대해 두 개의 키 해시를 만들어야합니다.

디버그 키 해시 :

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

디버그 키 해쉬 소스

For 해시 키 해시 :

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

해제 키 해시 소스

6
MBH

나는 같은 문제를 겪고 있었다. 우선 로그인하십시오. 그렇지만 유효하지 않은 키 해시

이것은 Unity 스레드가 아니지만 여기에서 내 대답을 발견했습니다. 그래서 나는 다른 누군가 (나처럼 길을 잃은)가 우연히 만났을 때를 대비하여 대답을 떠날 것이다.

Unity의 Facebook SDK가 잘못된 키 해시를 얻습니다. "C :\Users \"에서 사용자 ".Android\debug.keystore"의 키를 가져오고 완벽한 세계에서 프로젝트에서 만든 키 저장소에서 가져와야합니다. 그래서 해시 키가 등록되어 있지 않다는 것을 알려줍니다.

Madi 에서 제안한 것처럼이 링크 의 단계를 따라 올바른 키를 찾을 수 있습니다. shure가 프로젝트 내의 키 저장소를 가리 키도록하십시오. 그렇지 않으면 올바른 키를 얻지 못할 것입니다.

이 코드는 페이스 북에 대한 해시를 제공하지만 릴리스 해시를 얻으려면 다음 단계를 따라야합니다. 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) {

}
  1. 서명 된 APK를 생성하십시오.
  2. 휴대 전화를 노트북에 연결하고 연결 상태를 유지하십시오.
  3. 출시 apk를 수동으로 휴대 전화로 이동하여 APK를 설치하고 실행하십시오.

  4. 이제 안드로이드 logcat (필터 KeyHash를 사용하여보세요) : 당신은 페이스 북에 대한 릴리스 해시 키를 볼 수 있어야합니다. 간단히 복사하여 https://developers.facebook.com/apps 에 붙여 넣으십시오.

  5. 이제 완벽하게 작동해야하는 앱을 테스트 할 수 있습니다.

    행운을 빕니다.

3
abdul jalil

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

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

loginButton.setReadPermissions (public_profile email);

이것은 처음으로 작동했지만 FB에 다시 로그인 할 때 잘못된 해시 오류가 발생했습니다.

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

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

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

바라기를 이것은 누군가를 돕기를 바랍니다.

Facebook은 오해의 소지가있는 유효하지 않은 해시 키 오류 대신 올바른 예외를 반환해야합니다.

2
user3663906

많은 시련 끝에 나는 이것에 대한 해결책을 찾았다. 나는 페이스 북 개발자 콘솔에 디버그 키와 릴리스 키를 생성하고 추가했지만 여전히 오류가 발생합니다.

나를 위해 일한 유일한 솔루션은 Google에서 OpenSSL 프로그램을 제거하고 http://slproweb.com/products/Win32OpenSSL.html 에서 다운로드하는 것입니다.

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

2
Uchenna Nnodim

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

그냥 패키지 이름을 수정하십시오. 그런 다음 Log cat으로 가서 Debug search here를 선택하면 해시 키를 찾을 수 있습니다. 이제이 해시 키를 복사 한 다음 developer.facebook.app_id 사이트로 이동 한 다음 해시 키를 편집 한 다음 저장을 누릅니다. 이제 Android 프로젝트를 다시 실행하십시오. 문제가 해결 될 것입니다.

1
pavel_coder

이게 내가이 문제를 해결 한 방법이야.

먼저 SHA-1 값을 얻어야합니다. 이를 위해 두 가지 방법이 있습니다.
-> Android Studio에서 SHA-1 값을 얻으려면.

  1. Gradle을 클릭하십시오.
  2. 서명 보고서 클릭
  3. SHA-1 값 복사

또는 -> 키 스토어 파일에서 SHA-1 값을 얻으십시오.

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

SHA1 값을 다음과 같이 클립 보드에 복사하십시오. 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로 변환하십시오.
이것은 페이스 북이 요구하는 것입니다.
생성 된 해시 "******************* ="를 가져 와서 키 해시를 페이스 북 앱에 복사합니다.

1
Sajid Zeb

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

1
Kashif Nazar

내 응용 프로그램을 디버깅 할 때 같은 문제가 발생했습니다. 나는 당신이 첨부 된 이미지 (페이스 북이 무효라고 말한)에서 빗나간 해시를 다시 말하고 페이스 북의 개발자 콘솔에서 키 해시에 추가했다. 오타에주의하십시오.

이 솔루션은 적절한 솔루션보다 쉽게 ​​해결할 수 있습니다.

1
Piotr Sagalara

이것은 같은 문제를 가진 사람을 도울 수 있습니다.

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

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

keytool 사용법

2. 페이스 북 개발자 의 필수 필드에 붙여 넣으십시오.

3.In Android 스튜디오 파일 -> 프로젝트 구조 enter image description here

서명 매개 변수 추가

4. 풍미를 선택하십시오 enter image description here

우리가 만든 서명 구성 선택

5.select 빌드 유형 enter image description here

6. 선택 택배 (varient)를 빌드하고 빌드하십시오.

enter image description here

1
CLIFFORD P Y

같은 문제가있었습니다. Facebook 개발자 섹션에 저장된 해시 키를 생성 한 기기와 동일한 기기로 APK를 제작해야합니다.

0
genericname

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을 사용하여 새 키 해시를 결정하고 다른 사용자가 설명한대로 페이스 북을 추가했습니다.

0
Michael

사용 된 페이스 북은 기본 암호 및 디버깅 용 별칭이 아닙니다. 다음과 같이 변경해야하며 작동 할 것입니다.

/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
abhi shukla
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
ZafarHussain

여기에있는 사람들은 많은 정답입니다. 단 하나. 빠른 시작 자습서를 사용하지 않고받은 해시 응용 프로그램 -> 설정 -> 주 를 붙여 넣습니다.

0
Chuck

이것은 나를 위해 일했습니다.

Program Files\Java\jdkX.X.X_XXX\bin 폴더에있는 PC로 APK를 복사하십시오.

제 경우에는 C :\Program Files\Java\jdk1.8.0_191\bin입니다.

이 디렉토리에서 CMD를 열고 다음을 입력하십시오

keytool -list -printcert -jarfile YOUR_APK_NAME.apk

SHA1 값을 클립 보드에 복사하십시오. 다음과 같습니다. 79:D0:E6:80:4E:28:1E:D1:88:28:CB:D7:E6:BE:2E:0C:FB:24:98:52

그런 다음 http://tomeko.net/online_tools/hex_to_base64.php 로 이동하여 SHA1 값을 base64로 변환하십시오.

Facebook에서 생성 된 해시 "****************** ="를 가져와 Facebook 개발자 앱 설정에 키 해시를 복사해야합니다.

0
Muhammad Ovi