หากต้องการยืนยันหมายเลขโทรศัพท์โดยอัตโนมัติ คุณต้องใช้ทั้งส่วนไคลเอ็นต์และเซิร์ฟเวอร์ในขั้นตอนการยืนยัน เอกสารนี้จะอธิบายวิธีใช้ส่วนของเซิร์ฟเวอร์
เซิร์ฟเวอร์การยืนยันทางโทรศัพท์มีหน้าที่หลัก 3 ประการดังนี้
- การสร้างข้อความยืนยันที่มีรหัสแบบใช้ครั้งเดียวและมีรูปแบบที่ SMS Fetchr API ฝั่งไคลเอ็นต์คาดหวัง
- กําลังส่งข้อความยืนยันไปยังอุปกรณ์ของผู้ใช้
- การยืนยันเป็นรหัสแบบใช้ครั้งเดียวเมื่อเซิร์ฟเวอร์ส่งกลับมายังเซิร์ฟเวอร์ และทํางานหลังการยืนยันทั้งหมดที่แบ็กเอนด์ของคุณกําหนด
รายละเอียดเฉพาะของวิธีที่แอปโต้ตอบกับเซิร์ฟเวอร์จะขึ้นอยู่กับคุณ แนวทางที่ใช้กันโดยทั่วไปคือการแสดง REST API ที่มี 2 ปลายทาง ได้แก่ ส่วนที่ได้รับคําขอเพื่อยืนยันหมายเลขโทรศัพท์ที่ระบุและส่งข้อความการยืนยันทาง SMS และปลายทางที่ 2 ที่ได้รับรหัสแบบใช้ครั้งเดียวจากแอป
1. สร้างข้อความยืนยัน
เมื่อเซิร์ฟเวอร์ได้รับคําขอให้ยืนยันหมายเลขโทรศัพท์ ให้สร้างข้อความยืนยันที่คุณจะส่งให้อุปกรณ์ของผู้ใช้ก่อน ข้อความนี้ ต้องมีลักษณะดังนี้
- มีขนาดไม่เกิน 140 ไบต์
- มีรหัสแบบใช้ครั้งเดียวที่ไคลเอ็นต์ส่งกลับไปที่เซิร์ฟเวอร์เพื่อดําเนินการยืนยันให้เสร็จสมบูรณ์ (ดูการสร้างรหัสแบบใช้ครั้งเดียว)
- ใส่สตริงแฮช 11 อักขระที่ระบุแอป (ดูการประมวลผลสตริงแฮชของแอป)
มิเช่นนั้น เนื้อหาของข้อความยืนยันจะเป็นแบบใดก็ได้ที่คุณเลือก ซึ่งจะมีประโยชน์ในการสร้างข้อความที่คุณดึงรหัสแบบใช้ครั้งเดียวได้ง่ายในภายหลัง เช่น ข้อความยืนยันที่ถูกต้องอาจมีลักษณะต่อไปนี้
Your ExampleApp code is: 123ABC78FA+9qCX9VSu
การสร้างรหัสแบบใช้ครั้งเดียว
คุณใช้งานโค้ดแบบใช้ครั้งเดียวได้หลายวิธีตราบใดที่สามารถใช้รหัสได้ง่ายๆ และสามารถลิงก์รหัสดังกล่าวกับผู้ใช้หรือหมายเลขโทรศัพท์เมื่อแอปไคลเอ็นต์ส่งกลับไปยังเซิร์ฟเวอร์ของคุณ คุณควรทําให้รหัสง่ายต่อการพิมพ์ เพื่อรองรับสถานการณ์ที่อาจทําให้ผู้ใช้ต้องพิมพ์รหัสด้วยตนเอง
วิธีหนึ่งที่ใช้โค้ดแบบใช้ครั้งเดียวได้คือการสร้างตัวเลขแบบสุ่ม ซึ่งใช้เป็นคีย์ในตารางฐานข้อมูล ตัวอย่างเช่น คุณอาจมีตาราง Pending Verification ดังต่อไปนี้
รหัส | ผู้ใช้ | วันหมดอายุ |
---|---|---|
123456789... | 1234 | 3-14-2017 1:59 |
คุณจะใช้รหัสที่เข้ารหัส base32 เป็นรหัสแบบใช้ครั้งเดียวได้
กําลังคํานวณสตริงแฮชของแอป
บริการ Google Play ใช้สตริงแฮชเพื่อระบุว่าควรส่งข้อความยืนยันใดไปยังแอปของคุณ สตริงแฮชประกอบด้วยชื่อแพ็กเกจของแอปและใบรับรองคีย์สาธารณะของแอป วิธีสร้างสตริงแฮช
หากคุณใช้ App Signing โดย Google Play ให้ดาวน์โหลดใบรับรอง App Signing (
deployment_cert.der
) จากส่วน App Signing ของ Google Play Consoleจากนั้นนําเข้าใบรับรอง App Signing ไปยังที่เก็บคีย์ชั่วคราว โดยทําดังนี้
keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
หากคุณรับรอง APK โดยตรง ให้ข้ามขั้นตอนนี้
รับใบรับรอง App Signing ของคุณ ซึ่งอาจเป็นใบรับรองที่คุณนําเข้าข้างต้น หรือใบรับรองที่คุณใช้เพื่อลงนาม APK โดยตรงเป็นสตริงแบบเลขฐานสิบหกตัวพิมพ์เล็ก
ตัวอย่างเช่น หากต้องการรับสตริงฐานสิบหกจากคีย์สโตร์ชั่วคราวที่สร้างไว้ด้านบน ให้พิมพ์คําสั่งต่อไปนี้
keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
หากคุณรับรอง APK โดยตรง ให้ระบุคีย์สโตร์และชื่อแทนใบรับรองเวอร์ชันที่ใช้งานจริง
หากคุณสร้างคีย์สโตร์ชั่วคราว ให้ลบคีย์สโตร์ดังกล่าว
เพิ่มสตริงเลขฐาน 16 ลงในชื่อแพ็กเกจของแอปโดยคั่นด้วยการเว้นวรรค
คํานวณผลรวมของ SHA-256 ของสตริงแบบรวม อย่าลืมนําช่องว่างนําหน้าหรือต่อท้ายออกจากสตริงก่อนที่จะคํานวณผลรวม SHA-256
เข้ารหัสฐาน 64 ของผลรวม SHA-256 คุณอาจต้องถอดรหัส ผลรวม SHA-256 จากรูปแบบเอาต์พุตก่อน
สตริงแฮชของแอปเป็นอักขระ 11 ตัวแรกของแฮชฐาน 64
คําสั่งต่อไปนี้จะคํานวณสตริงแฮชจากคีย์สโตร์ของเวอร์ชันที่ใช้งานจริง
keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
หรือคุณอาจรับสตริงแฮชของแอปด้วยคลาส AppSignatureHelper จากแอปตัวอย่าง SMS รีทรีฟเวอร์ อย่างไรก็ตาม หากคุณใช้คลาสผู้ช่วย อย่าลืมนําสตริงนั้นออกจากแอปหลังได้รับสตริงแฮช อย่าใช้สตริงแฮชที่ประมวลผลแบบไดนามิกในไคลเอ็นต์ของข้อความการยืนยัน
2. ส่งข้อความการยืนยันทาง SMS
หลังจากสร้างข้อความยืนยัน ให้ส่งข้อความไปยังหมายเลขโทรศัพท์ของผู้ใช้โดยใช้ระบบ SMS
ตัวอย่างเช่น ดูการยืนยันแอปโดยใช้ Twilio SMS ในเว็บไซต์นักพัฒนาซอฟต์แวร์ Twilio'
เมื่ออุปกรณ์ได้รับข้อความนี้ ระบบจะส่งข้อความไปยังแอปของคุณ แอปจะแยกรหัสแบบใช้ครั้งเดียวและส่งกลับไปยังเซิร์ฟเวอร์เพื่อดําเนินการยืนยันให้เสร็จสมบูรณ์
3. ยืนยันรหัสแบบใช้ครั้งเดียวเมื่อสินค้าส่งคืน
โดยทั่วไป เซิร์ฟเวอร์การยืนยันหมายเลขโทรศัพท์จะมีปลายทางที่ 2 ซึ่งใช้เพื่อรับรหัสแบบใช้ครั้งเดียวจากแอปไคลเอ็นต์ เมื่อเซิร์ฟเวอร์ได้รับรหัสแบบใช้ครั้งเดียวจากแอปของคุณในปลายทางนี้ ให้ทําดังนี้
- ยืนยันว่ารหัสแบบใช้ครั้งเดียวถูกต้องและยังไม่หมดอายุ
- บันทึกว่าผู้ใช้ที่เชื่อมโยงกับรหัสแบบใช้ครั้งเดียว ได้ยืนยันหมายเลขโทรศัพท์แล้ว
- นําบันทึกฐานข้อมูลแบบใช้ครั้งเดียวออก หรือมิฉะนั้นให้ใช้รหัสเดียวกันอีกไม่ได้
เมื่อบันทึกสถานะการยืนยันของผู้ใช้และนําโค้ดแบบใช้ครั้งเดียวออกจากฐานข้อมูล การยืนยันจะเสร็จสมบูรณ์