it-swarm-ko.com

Android-Facebook 앱의 주요 해시

Facebook 게시 기능을 통합하려는 Android 앱에서 작업하고 있습니다. Facebook-Android SDK를 다운로드하고 거기에 Android 용 키 해시를 생성하는 데 사용되는 readme.md (텍스트 파일)가 있습니다. 어떻게 생성합니까?

218
ravi babu

다음은 단계입니다.

  1. 다운로드 한 openssl Google 코드 (64 비트 컴퓨터를 사용한다면 다운로드 openssl-0.9.8e X64 최신 버전이 아님)

  2. 그것을 추출하십시오. C :/OpenSSL 폴더를 생성하고 여기서 압축을 푼 코드를 복사하십시오.

  3. debug.keystore 파일 경로를 감지하십시오. u가 찾지 못했다면 C : /에서 검색을 수행하고 다음 단계에서 명령의 경로를 사용하십시오.

  4. keytool.exe 경로를 감지하고 해당 dir/in 명령 프롬프트로 이동하여이 명령을 1 행 단위로 실행하십시오.

    $ keytool -exportcert -alias androiddebugkey -keystore "C :\Documents and Settings\Administrator.Android\debug.keystore"| "C :\OpenSSL\bin\openssl"sha1 -binary | "C :\OpenSSL\bin\openssl"base64

    • 비밀 번호를 물어볼 것입니다, 안드로이드를 넣어
    • 그게 다야. 열쇠 해시를 얻을거야.

자세한 정보는 visit here

305
Avi C

모든 활동에서이 코드를 사용할 수 있습니다. 디버그 키인 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());
}

키를 알고 나면 코드를 삭제할 수 있습니다.)

226
Bassem Samy

Windows 및 Mac OS X 용 작은 도구를 만들었습니다. 키 저장소 파일을 던져서 해시 키를 가져옵니다.

기본 debug.keystore 파일을 원하면 기본 별명과 암호를 사용하십시오. 그렇지 않으면 자신의 키 저장소 파일과 값을 사용하십시오.

그것을 확인하십시오 Windows 버전을 다운로드하십시오 또는 Mac OS X 버전을 다운로드하십시오 (Dev-Host가 때때로 작동하지 않을 수 있습니다 ... 링크가 끊어진 경우 PM 나 그리고 나는 그것을 고칠 것이다).

너희들을 도와 주길 바래 ...

2014 년 12 월 31 일 - EDIT : 호스트를 AFH로 변경했습니다. 링크가 손상되었는지 알려주세요.

2013 년 11 월 21 일 - EDIT :

사용자가 요청할 때 기본 키 저장소 위치와 DONATE 버튼을 추가했습니다. 제가 당신을 도왔다면 그것을 자유롭게 사용하십시오 . :)

Screen shotScreen shot 2

132
Shahar

현재 Facebook의 Android Tutorial 의 지침은 Windows 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의 앱 설정에 복사하여 붙여 넣으세요.

59
Bryan Bedard

이것은 페이스 북의 공식 페이지 에서 주어진 것입니다 :

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

이 명령을 파편로 나누겠습니다.

  1. "keytool.exe"를 찾으십시오. C : 드라이브에서 검색 할 수 있습니다. "Java jdk" 또는 "Java jre"에서 찾을 수 있습니다. 여러 버전을 설치 한 경우 모두 선택하십시오.

  2. CMD 프롬프트를 열고 "keytool.exe"를 찾은 위의 디렉토리로 이동하십시오.

    "exe"를 잘라 페이스 북 페이지에 제공된 위의 명령을 붙여 넣으십시오.

  3. OpenSSL이 입 력 출력 명령으로 인식되지 않는다는 것을 입력하면 오류가 발생합니다. 해결책 : OpenSSL 에서 "Openssl"을 다운로드하십시오 (64 비트 시스템을 사용하는 경우 openssl-0.9.8e X64를 다운로드해야 함) ). 압축을 풀고 어디서나 저장할 수 있습니다 ... 나는 C : 드라이브의 OpenSSl 폴더에 저장했습니다.

  4. 위의 명령에서 "C :\OpenSSL\bin\openssl"이있는 OpenSSL 오류가 발생한 위의 명령에서 openssl을 바꿉니다 ( "|").

  5. 암호를 묻는 메시지가 표시되면 Android을 입력하십시오.

그러면 해시 키가 생깁니다. 추가 단계는 Facebook 페이지를 다시 참조하십시오.

47
DeltaCap019

이 코드를 활동의 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) {

}

계정에 여러 개의 해시 키를 추가 할 수 있습니다. 따라서 디버그에서 실행중인 경우 릴리스 모드에서 다시 실행하는 것을 잊지 마세요.

31
Ilya Gazman

Android 키 해시 코드를 가져 오려면 다음 단계를 따르세요.

  1. Windows 용 OpenSSL 다운로드 여기
  2. 이제 C 드라이브에 압축을 풉니 다.
  3. CMD 프롬프트 열기
  4. cd C:\Program Files\Java\jdk1.6.0_26\bin 유형
  5. 그런 다음 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 만 입력하십시오.
  6. 끝난
23
noelyahan

내가 찾은 가장 간단한 해결책은 다음과 같습니다.

  • 로그 고양이 열기
  • 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
    
  • "abcdefgHIJKLMN + OPqrstuvwzyz"를 복사하여 Facebook Android 해시 영역에 붙여 넣으십시오.

14
Ron
  • 여기에 Windows 용 openSSL을 다운로드하십시오 여기서 64 비트 및 32 비트를 찾을 수 있습니다

  • 다운로드 한 파일을 추출한다.

  • c 드라이브에 폴더 이름 openSSL을 만듭니다.
  • 압축을 푼 모든 항목을 openSSL 폴더에 복사하십시오 (bin, include, lib, openssl.cnf).
  • android 디버그 키 저장소를 가져 오면 기본 위치가됩니다.

C :\Users\username\.Android\debug.keystore

  • 이제 명령을 입력하십시오.이 코드를 프롬프트하고 붙여 넣으십시오.

keytool -exportcert -alias androiddebugkey -keystore C :\Users\username.Android\debug.keystore | "C :\openSSL\bin\openssl"sha1 -binary | "C :\openSSL\bin\openssl"base64

  • enter 키를 누르면 28 자리 키 코드가 나타납니다.
11
Ashana.Jackol

Android 사이트 에 설명 된 절차와 같이 Android 용 서명 된 앱용 키 도구로 키 저장소를 만들어야하고 cygwin을 설치해야합니다. openssl을 Google 코드 에서 설치하려면 다음 명령을 실행하면 안드로이드에 대한 해시 키가 생성되고 해시 키가 페이스 북 애플리케이션에 저장됩니다. 만들어진. 그런 다음 게시 할 벽 ( "publish_stream")에 대한 Android 애플리케이션을 통해 Facebook 응용 프로그램에 액세스 할 수 있습니다.

$ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 - 이진 | openssl base64

Cygwin에서 위의 명령을 실행해야합니다.

6
hossaindoula
  1. 단순히 주요 활동 파일을 열고 아래 언급 된 기능을 생성하십시오 :

         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 응용 프로그램을 실행하면 응용 프로그램에 해시 키가 생성됩니다.

  1. 이제 log cat을 열고 "KeyHash"로 검색하고 해시 키를 복사하십시오.

  2. 하나는 해시 키를 생성하여이 기능을 제거 할 수 있습니다.

6
mohit sharma

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)

그것은 안드로이드 인 암호를 묻습니다.

6
Maniya Joe

1) 응용 프로그램에 서명 할 키를 작성하고 별명을 기억하십시오.

2) OpenSSL을 설치하십시오.

3) 경로에 OpenSSL의 bin 폴더를 넣으십시오.

4) FB-Android-SDK 페이지 에서 "Single Sign-On 설정"아래에 설명 된 단계를 수행하고 해시 키. 올바른 별칭과 키 저장소 파일 이름을 입력했는지 확인하십시오.

5) Facebok에서 응용 프로그램을 만들고 Mobile Devices 탭에서이 해시 키를 입력하십시오.

5
Abhinav Manchanda

공식 문서 페이스 북 개발자 사이트 :

@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) {

    }
5
Hardik Thaker

Linux의 경우

터미널 열기 :

디버그 빌드의 경우

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

주 : 양쪽 모두에 패스워드를 요구해야합니다. 패스워드를 묻지 않으면 커맨드에 이상이 있음을 나타냅니다.

4
Biraj Zalavadia

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

    }
}
4
Ramkailash

비슷한 문제에 관해서 대답 나는 이것이 나를 위해 일하는 것으로 나타났습니다 :

  • 해시를 알고 싶은 apkname.apk 파일을 ' Java\jdk1.7.0_79\bin '폴더로 복사하십시오.
  • 이 명령을 실행하십시오 keytool -list -printcert -jarfile apkname.apk
  • SHA1 값을 복사하여 다음을 사용하여 변환하십시오. site
  • 변환 된 Keyhash 값을 사용하십시오 ( ex. zaHqo1xcaPv6CmvlWnJk3SaNRIQ =)
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
4
Pravin Mohol

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

    }
3
Prashant Jajal

릴리스 키의 해시를 생성하려면 Mac 또는 Windows에서 릴리스 키 별칭과 키 스토어의 경로를 대체하여 다음 명령을 실행하십시오.

Windows의 경우 다음을 사용하십시오.

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

이 명령은 28 개의 characher 문자열을 생성해야합니다. 복사붙여 넣기이 해시 키 해시를 기억하십시오. 귀하의 Facebook App 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-hashhttp://note.taable.com

3
HTML5 developer

가장 간단한 해결책은 다음과 같습니다.

  1. 해시 키를 추가하지 말고 다른 모든 것을 구현하십시오.
  2. 페이스 북 로그인을 누르면 "유효하지 않은 키 해시입니다. 키 해쉬"xxx "는 저장된 키와 일치하지 않습니다 ..."
  3. Facebook 앱 대시 보드를 열고 해시 "xxx ="(오류 + "="부호의 "xxx"해시)를 추가하십시오.
2
Singed

가장 좋은 방법은 다음 코드를 사용하는 것입니다.

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

즐겨 :)

1
AivarsDa

C 드라이브 및 openssl 폴더에서 ssl을 열린 상태로두면이 명령을 사용하십시오.

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\AJAY SUNDRIYAL.Android\debug.keystore" | openssl sha1 -binary | openssl base64
1
SANJAY GUPTA

먼저 로컬 컴퓨터에서 키 해시를 생성하려면 Android 디버그 키 저장소에 대해 Java의 keytool 유틸리티 (콘솔 경로에 있어야 함)를 실행하십시오. 기본적으로 집 .Android 디렉토리에 있음).

우분투에서 내 컴퓨터에서 woking하고있다.

keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
1
Jamshid

나는 작은 실수를 명심해야했다. 키 스토어를 사용하는 경우 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가 아닌 키 저장소 암호를 입력하십시오.

시원한.

1
Pravin Mohol

코드 작성 방법을 모르는 사람들을 위해, AivarsDa의 Google 핵심 도구가 가장 쉬운 솔루션입니다. 그것에서 해시 키를 가져 와서 페이 스북 앱 설정으로 복사하십시오. keygen 도구의 공유는 내 응용 프로그램이 내 휴대 전화에서 충돌하게하므로 메모장에 수동으로 입력 한 다음 fb에 복사했습니다. 마침내 좌절감을 느끼고이 단계를 지나서

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



}
0
Anil Bhatiya

Windows의 경우 : -

1.Download openssl(openssl-for-windows)
2.Copy and Paste openssl folder into c drive.
3.C:\Android\.Android\debug.keystore => Debug Keystore path
4.C:\Program Files\Java\jdk1.8.0_181 => JDK PATH
5.Go to jdkpath=>Enter the below command. (keytool inside Debug keystore path)  

keytool -exportcert -alias androiddebugkey -keystore C :\Android.android\debug.keystore | "C :\openSSL\bin\openssl"sha1 -binary | "C :\openSSL\bin\openssl"base64

0
priyanga

나는 keytool을 사용하여 Key Hash 생성을 시도했지만, 어떻게 든 생성 된 해시는 유효하지 않습니다.

packageManager 자체에서 얻을 수 있다면 시간과 노력을 절약 할 수 있습니다.

try {
    val info = this.packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
    for (signature in info.signatures) {
        MessageDigest.getInstance("SHA").apply {
            update(signature.toByteArray())
            Log.d("KeyHash:", Base64.encodeToString(digest(), Base64.DEFAULT))
        }
    }
} catch (e: PackageManager.NameNotFoundException) {
    Log.d("KeyHash Exception:", "${e.message}")
} catch (e: NoSuchAlgorithmException) {
    Log.d("KeyHash Exception:", "${e.message}")
}
0
Delacrix Morgan