web analytics

Android Tip : การสร้าง Key Hashes สำหรับทำ Facebook login บน Android

cover-2

 

บทความนี้ ขอบันทึกเรื่อง เกี่ยวกับ hash key สำหรับ facebook integration สักนิดนึงครับ เผื่อมีประโยชน์ครับ

ปกติการทำ facebook login จะต้องใช้ key hash
โดยนำมากรอกในช่อง Key Hashes ในหน้า Setting ของ facebook app (developer)
https://developers.facebook.com/apps/

1

 

Hash key มี 2 แบบ

Debug key ใช้สำหรับ debug ในเครื่องเรา
Release key ใช้ตอนปล่อยขึ้น Store แล้ว

ถ้าเราไม่ใช้ Release key ตอนขึ้น store แอปเราจะล็อคอินด้วย facebook ไม่ได้ มันจะบอกว่า hash key invalid

 

การสร้าง Debug Key

วิธีการที่ง่ายที่สุดคือ log เอาจาก code ข้างล่างนี้ แล้วไปกรอกใน key hashes เราก็จะทำ facebook login ผ่านแล้ว โดยใช้สำหรับใน debug เท่านั้น
อย่าลืมเปลี่ยน package name นะ

private void debugHashKey() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.benzneststudios.benznestwallet",
                    PackageManager.GET_SIGNATURES);
            for (android.content.pm.Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                MyLog.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
    }

 

การสร้าง Release Key

พอเราจะอัพแอปขึ้น store ก็ต้องทำ release key อีกตัว

 

STEP 1) โหลด openssl

(หากเป็น 64bit ก็เลือกตัว open64 )

https://slproweb.com/products/Win32OpenSSL.html

 

ทำการติดตั้งให้เรียบร้อย และจำ path ไว้ให้ดี

2

 

STEP 2) สร้าง keystore ใน Android studio

หากมีของตัวเองแล้วก็ข้าม step นี้ไปได้

สร้าง keystore ซึ่งจะใช้สำหรับ ทำ release apk ใครยังไม่มี ก็ทำการ generate apk
ไปที่ Build > Generate Signed APK

4

 

กด Create new

3

 

ใส่รายละเอียดให้ครบ ตั้งรหัสผ่าน
ส่วน Alias คือ นามแผง ใช้ชื่ออะไรก็ได้ ให้จำ alias name กับ password ไว้ให้ดีนะ

5

 

ก็จะได้ ไฟล์ .jks มาแล้ว (จำ path ไฟล์นี้ไว้)

6

 

STEP3) สร้าง key hashes

เปิด cmd ขึ้นมา แล้วไปที่ path โฟลเดอร์ bin ของ jdk หรือ jre ในเครื่องเรา

8

 

ให้ไปแปะ code ดังนี้ โดยเปลี่ยนชื่อ alias และ path ให้ถูกต้อง

keytool -exportcert -alias benznest -keystore "C:\Work\Android Project\benznest_key.jks" | C:\OpenSSL-Win64\bin\openssl sha1 -binary | C:\OpenSSL-Win64\bin\openssl base64

7

 

จากนั้นกด ENTER ทีนึง มันก็จะถามหา password ให้เรากรอก รหัส keystore ของเราลงไป

9

 

สังเกตว่า ต่อให้เราใส่รหัสผิดก็จะได้ key hash มาอยู่ดี แต่มันจะใช้ไม่ได้นะ อันนี้ต้องระวังให้ดี

10

 

จากนั้นก็เอา key hash นี้ไปใช้ได้เลย เป็น Release key

ไปแปะไว้ทั้งคู่เลยทีนี้ก็ใช้ได้แล้ว

11

 

สร้าง Debug key ด้วย openssl

หากใครไม่สะดวกสร้าง debug key แบบ run ใน code เราสามารถใช้วิธีเดียวกันกับ release key กับ debug key ได้ เพราะจริงๆแล้ว keystore ของ debugkey จะอยู่ใน C:\Users\..\.android\debug.keystore 

alias คือ androiddebugkey
password คือ android

ดังนั้นผมสามารถ ใช้ command นี้

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\benznest\.android\debug.keystore" | C:\OpenSSL-Win64\bin\openssl sha1 -binary | C:\OpenSSL-Win64\bin\openssl base64

 

Certificate fingerprint

ในบางครัังเราก็ต้องการ fingerprint แบบที่ใช้ : คั่น ให้ใช้คำสั่งนี้

keytool --exportcert -list -v -alias androiddebugkey -keystore "C:\Users\benznest\.android\debug.keystore"

 

จบแล้ว ลองเอาไปใช้งานดูนะครับ

(: