Google Maps SDK for Android v3 - ตอนที่ 2 การสร้าง API Key
จากที่ได้เรียนรู้รายละเอียดต่างๆของ Maps SDK กันในบทความที่แล้ว และถึงตอนนี้ผู้ที่หลงเข้ามาอ่านก็คงอยากจะลองใช้เจ้า SDK ตัวนี้บนโปรเจคของตัวเองดูแล้ว
แต่ก่อนที่จะเรียกใช้งาน Maps SDK ในโปรเจค เจ้าของบล็อกขอแนะนำให้เริ่มจากการสร้าง API Key เป็นอย่างแรกเสียก่อน
บทความในซีรีย์เดียวกัน
API Key เพื่อใช้งาน Maps SDK
การจะใช้งาน Maps SDK ได้นั้น นักพัฒนาจะต้องสร้าง API Key จาก Google Developer Console เสียก่อน เพราะ Maps SDK จะบังคับให้นักพัฒนาต้องใส่ API Key ลงไปในโปรเจคด้วย ไม่เช่นนั้น Google Maps จะไม่แสดงผล
โดยเข้าไปที่ Google Developer Console และเข้าใช้งานด้วย Google Account
สร้างโปรเจคและเปิดใช้งาน Maps SDK for Android
สร้างโปรเจคขึ้นมาใหม่ ตั้งชื่อตามใจชอบได้เลย และเมื่อสร้างเสร็จแล้ว ให้เลือกไปที่ Hamburger Menu > API & Services > Library
ที่หน้า API Library ให้ค้นหา API ที่ชื่อว่า Maps SDK for Android
เพื่อเข้าไปกดปุ่ม Enable
เพื่อเริ่มใช้งาน
เมื่อเปิดใช้งาน Maps SDK for Android เสร็จเรียบร้อยแล้ว ต่อไปก็ถึงเวลาสร้าง API Key เพื่อใช้งานบนแอปแอนดรอยด์แล้ว
สร้าง API Key
ให้เลือกไปที่ Hamburger Menu > API & Services > Credentials
เพื่อสร้าง API Key
ที่หน้า Credentials ให้กดที่ปุ่ม + CREATE CREDENTIALS
แล้วเลือก API key
เพื่อสร้าง API Key ขึ้นมาใหม่
ระบบจะทำการสร้าง API Key ขึ้นมาให้ โดยให้ Copy เก็บไว้ก่อน เพราะจะต้องนำไปใช้ในโปรเจคบนแอนดรอยด์ในภายหลัง
แต่สิ่งที่นักพัฒนาต้องกำหนดเพิ่มก็คือ การกำหนดให้ API Key นี้ใช้งานได้เฉพาะแอปของตัวเองเท่านั้น เพื่อป้องกันผู้อื่นแอบนำ API Key ไปใช้โดยไม่ได้รับอนุญาต ดังนั้นให้กดปุ่ม RESTRICT KEY
ต่อซะ
ที่หน้า Restrict and rename API key (สามารถเข้ามาเปลี่ยนชื่อ API Key ที่นี่ได้ด้วยนะ) ที่หัวข้อ Application restrictions ให้เลือกที่ Android apps
จากนั้นจะมีรายละเอียดแสดงที่ฝั่งขวามือ ซึ่งเป็นรายละเอียดการแสดงข้อมูล Fingerprint ของ Keystore
ดึงข้อมูล SHA1 จาก Keystore เพื่อผูกกับ API Key
ใช่ครับ การผูก API Key เข้ากับแอปจะต้องใช้ Keystore ที่ใช้ใน App Signing นั่นเอง โดยจะใช้ SHA1 จาก Fingerprint ของ Keystore มาใช้เป็นตัวยืนยันแอปนั่นเอง โดยที่
- ในระหว่างการพัฒนาโปรเจค ให้ใช้ SHA1 จาก Fingerprint ของ Debug Keystore (Android Studio สร้างขึ้นมาเก็บไว้ในเครื่องให้โดยอัตโนมัติ)
- ตอนที่จะอัปโหลดแอปขึ้น Google Play จะต้องเปลี่ยนไปใช้ SHA1 จาก Fingerprint ของ Signed Keystore หรือ Release Keystore (นักพัฒนาสร้างขึ้นมาเองเพื่อใช้ในขั้นตอน App Signing)
ขั้นตอนนี้เป็นขั้นตอนสำคัญ เพราะถ้ากำหนด SHA1 ไม่ถูกต้อง จะทำให้ Google Maps ไม่แสดงผล ซึ่งเกิดขึ้นบ่อยกับนักพัฒนาที่ลืมกำหนด SHA1 ของ Signed Keystore ตอนอัปโหลดขึ้น Google Play
การดูข้อมูล SHA1 จาก Fingerprint ของ Keystore สามารถดูได้ที่คำสั่งที่อธิบายอยู่ในหน้าดังกล่าวได้เลย
สำหรับคำสั่งของ Signed Keystore หรือ Release Keystore จะต้องใส่รหัสผ่านและข้อมูล Alias ให้ถูกต้องตามที่กำหนดไว้ในตอนที่สร้าง Keystore นั้นๆขึ้นมา
ยกตัวอย่างเช่น ข้อมูล Fingerprint ที่อยู่ในเครื่องเจ้าของบล็อก
> keytool -list -v -keystore ~/.android/debug.keystore
-storepass android -alias androiddebugkey -keypass android -v
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: androiddebugkey
Creation date: Aug 7, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: C=US, O=Android, CN=Android Debug
Issuer: C=US, O=Android, CN=Android Debug
Serial number: 1
Valid from: Wed Aug 07 18:06:51 ICT 2019 until: Fri Jul 30 18:06:51 ICT 2049
Certificate fingerprints:
SHA1: DE:96:08:AC:0E:12:43:46:B0:E9:CB:EA:18:55:6C:69:04:C3:F3:CE
SHA256: 3E:3A:40:18:6C:0B:12:A8:E7:FA:3C:79:3A:E9:DE:BF:FA:CE:CA:33:CB:02:0F:B5:07:12:36:77:9C:7C:58:56
Signature algorithm name: SHA1withRSA (weak)
Subject Public Key Algorithm: 1024-bit RSA key (weak)
Version: 1
ดังนั้น SHA1 สำหรับ Debug Keystore ที่เจ้าของบล็อกต้องใส่ใน Google Developer Console ก็คือ
DE:96:08:AC:0E:12:43:46:B0:E9:CB:EA:18:55:6C:69:04:C3:F3:CE
ผูก API Key ด้วย SHA1 และ Package Name
เมื่อได้ SHA1 มาแล้ว ก็ให้กดปุ่ม ADD AN ITEM
ที่อยู่ในหัวข้อ Application restrictions
โดยจะมีหน้าต่างแสดงขึ้นมาเพื่อให้กรอกข้อมูลของ SHA1 และ Package Name ของแอป
นอกจาก SHA1 แล้ว นักพัฒนาจะต้องกำหนด Package Name ของแอปให้ถูกต้องด้วย ในกรณีที่สร้างโปรเจคขึ้นมาแล้ว ก็ให้นำ Package Name มาใส่ได้เลย แล้วกดปุ่ม DONE
ซะ
ในกรณีที่โปรเจคมีการเปลี่ยน Package Name ในภายหลัง ก็อย่าลืมมาอัปเดตที่นี่ด้วยนะ ไม่เช่นนั้นจะใช้งานไม่ได้ทันที
โดย 1 API Key สามารถผูกกับ SHA1 และ Package Name กี่ตัวก็ได้ ดังนั้นนักพัฒนาจะใส่ทั้ง SHA1 ของ Debug Keystore และ Release Keystore ไว้เลยก็ได้เช่นกัน จะได้ไม่ลืมในภายหลัง
หรือจะใส่ Package Name หลายๆตัวก็ได้เช่นกัน ซึ่งมีประโยชน์มากสำหรับแอปขนาดเล็กที่ไม่ต้องการสร้างโปรเจคบน Google Developer Console หลายๆโปรเจค หรือสำหรับแอปที่ทำ Build Variant แล้วมีชื่อ Package Name แยกตาม Build Environment
ยินดีด้วย คุณได้ API Key พร้อมใช้งานสำหรับ Maps SDK บนแอนดรอยด์แล้ว
เพียงเท่านี้ API Key ของผู้ที่หลงเข้ามาอ่านก็พร้อมจะนำไปใช้งานในโปรเจคแอนดรอยด์แล้ว เย้!