카카오톡 SDK / 페이스북 SDK에 등록시 필요한 해시키
개발시에는 debugkey의 해시태그로 등록하여 작업했다.
Kotlin 소스
fun getHashKey(context: Context): String? {
try {
if (Build.VERSION.SDK_INT >= 28) {
val packageInfo = getPackageInfo(context, PackageManager.GET_SIGNING_CERTIFICATES)
val signatures = packageInfo.signingInfo.apkContentsSigners
val md = MessageDigest.getInstance("SHA")
for (signature in signatures) {
md.update(signature.toByteArray())
return String(Base64.encode(md.digest(), NO_WRAP))
}
} else {
val packageInfo =
getPackageInfo(context, PackageManager.GET_SIGNATURES) ?: return null
for (signature in packageInfo!!.signatures) {
try {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
return Base64.encodeToString(md.digest(), Base64.NO_WRAP)
} catch (e: NoSuchAlgorithmException) {
// ERROR LOG
}
}
}
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
} catch (e: NoSuchAlgorithmException) {
e.printStackTrace()
}
return null
}
getHashKey(mContext);
@Nullable
public static String getHashKey(Context context) {
final String TAG = "KeyHash";
String keyHash = null;
try {
PackageInfo info =
context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
keyHash = new String(Base64.encode(md.digest(), 0));
Logs.e("keyHash : " + keyHash);
}
} catch (Exception e) {
Log.e("name not found", e.toString());
}
if (keyHash != null) {
return keyHash;
} else {
return null;
}
}
라이브 진행시 해시태그를 구하기 위해 아래의 Openssl 설치 필요.
Openssl
http://slproweb.com/products/Win32OpenSSL.html
Win64 OpenSSL v1.1.1 의 EXE 버전을 다운 받아 설치항 넥스트만 하였더니 설치 완료.
C:\Program Files\OpenSSL-Win64\bin 폴더를 환경변수 path에 넣어준다.
실행 : CMD
CD C:\Users\PC\.android 폴더로 이동한다 debug.keystore 등의 파일이 있는 곳으로 이동한다.
alias 확인 방법
배포 버전 키의 위치 경로 값을 넣고 확인한다.
명령어 : keytool -list -keystore "\폴더\내키.jks"
인증서 지문 위의 파란색 부분 명칭을 확인한다.
이제 alias 명칭을 넣고 실행한다
keytool -exportcert -alias 위에서찾은(alias) -keystore "\폴더\내키.jks" | openssl sha1 -binary | openssl base64
alias 가 test라면
keytool -exportcert -alias test -keystore "\폴더\내키.jks" | openssl sha1 -binary | openssl base64
요럼 정상적으로 API 가 사용가능한게 확인되다.