티스토리 뷰

페이스북SDK,카카오톡SDK등과 연동하기 위해서는 반드시 해시키(Hash key)를 등록 해야 합니다. 

해시키(Hash key)는 Android 개발 환경에서 가지고 있는 인증서 바이너리에 대한 해시값으로 쉽게 앱 고유의 키캆이라고 생각 하면 됩니다.페이스북SDK,카카오톡SDK등에서는 등록된 해시키(Hash key)를 가지고 각각의 앱을 구분하여 설정된 기능을 제공 해주게 됩니다. 


해시키(Hash key)는 개발용 key와 릴리즈용 key가 있는데, 이 둘의 차이는 말그대로 개발용 key는 개발할때만 사용 하는 키로 본인의 Android 개발환경에 기본적으로 저장되어 있는 인증서 바이너리에 대한 해시값이고 릴리즈용 key는 실제 앱을 배포할떄 사용한 인증서 바이너리에 대한 해시값입니다.


앱을 실제 앱스토어등에 올리는 경우 발급한 keyStore를 사용해 올리기 때문에 반드시 릴리즈용 key가 등록되어 있어야 합니다. 개발할떄 개발용 key로 모든 테스트까지 끝마친 상황에서 실수로 그대로 개발용 key만 등록한 경우 앱스토어에서 다운받은 일반 사용자들은 해당 해시키(Hash key)로 처리되는 모든 기능이 되지 않기 때문에 실수 하지 말고 반드시 릴리즈용 key를 등록 해야 합니다.


일반적으로 해시키(Hash key)를 가져오는 방법으로 많이 언급 되는 것이 keytool을 이용한 방법입니다.


카카오 디벨로퍼 해시키(Hash key) 가이드 : https://developers.kakao.com/docs/android#시작하기-샘플앱-실행


페이스북도 그렇고 카카오톡도 그렇고 해시키(Hash key)에 대해서 가이드를 제공 해주고 있지만 개발환경이 틀린지 제경우에는 제대로 처리되지 않아 keytool를 이용 하지 않고 안드로이드 소스 코드로 해시키(Hash key)를 가져와 사용 하고 있습니다.


그럼 안드로이드 소스 코드로 해시키(Hash key)를 가져오는 방법에 대해서 공유해 드립니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_facebook_hash_key);
     try {
            PackageInfo info = getPackageManager().getPackageInfo("your.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) {
         e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
        }
    }
}
cs



"your.package.name"로 되어 있는 부분을 자신의 앱의 패키명으로 변경 한 후에 위 코드가 실행되면 로그상에 KeyHash가 표시 되며, 해당 키를 사용 하면 됩니다. 물론 릴리즈용 key가 필요한 경우에는 릴리즈로 빌드한 후에 위 코드를 재실행 시켜 릴리즈용 key를 다시 가져 와야 합니다.


댓글