ในการยืนยันหมายเลขโทรศัพท์โดยอัตโนมัติ คุณต้องใช้ทั้งลูกค้าและ ส่วนของขั้นตอนการตรวจสอบเพื่อยืนยัน เอกสารนี้อธิบายวิธี ใช้งานส่วนของเซิร์ฟเวอร์
เซิร์ฟเวอร์การยืนยันทางโทรศัพท์มีหน้าที่รับผิดชอบงาน 3 อย่างดังนี้
- การสร้างข้อความยืนยันที่มีรหัสแบบใช้ครั้งเดียวและมี รูปแบบที่ SMS Retriever API ฝั่งไคลเอ็นต์ต้องการ
- กำลังส่งข้อความยืนยันไปยังอุปกรณ์ของผู้ใช้
- การยืนยันรหัสแบบใช้ครั้งเดียวเมื่อถูกส่งกลับไปยังเซิร์ฟเวอร์และดำเนินการให้เสร็จสิ้น งานหลังการยืนยันที่แบ็กเอนด์ต้องการ
คุณสามารถเลือกได้ว่าจะให้แอปโต้ตอบกับเซิร์ฟเวอร์อย่างไร ทั่วไป คือการเปิดเผย REST API ด้วยปลายทาง 2 จุด โดยปลายทาง 1 ส่วนรับคำขอ เพื่อยืนยันหมายเลขโทรศัพท์และส่งข้อความยืนยันทาง SMS และ ปลายทางที่ 2 ที่ได้รับรหัสแบบใช้ครั้งเดียวจากแอปของคุณ
1. สร้างข้อความยืนยัน
เมื่อเซิร์ฟเวอร์ได้รับคำขอให้ยืนยันหมายเลขโทรศัพท์ ก่อนอื่นให้สร้าง ข้อความยืนยันที่คุณจะส่งไปยังอุปกรณ์ของผู้ใช้ ข้อความนี้ ต้อง
- มีขนาดไม่เกิน 140 ไบต์
- มีรหัสแบบใช้ครั้งเดียวที่ไคลเอ็นต์ส่งกลับไปยังเซิร์ฟเวอร์ของคุณ ดำเนินการตามขั้นตอนการยืนยันให้เสร็จสมบูรณ์ (โปรดดู การสร้างรหัสแบบใช้ครั้งเดียว)
- ระบุสตริงแฮชยาว 11 อักขระที่ระบุแอปของคุณ (โปรดดู การคำนวณสตริงแฮชของแอป)
มิฉะนั้น เนื้อหาของข้อความยืนยันจะเป็นอะไรก็ได้ที่คุณเลือก การสร้างข้อความที่คุณสามารถแยกข้อความแบบครั้งเดียวได้อย่างง่ายดายก็มีประโยชน์ โค้ดในภายหลัง ตัวอย่างเช่น ข้อความยืนยันที่ถูกต้องอาจมีลักษณะดังนี้ ดังต่อไปนี้:
Your ExampleApp code is: 123ABC78FA+9qCX9VSu
การสร้างรหัสแบบใช้ครั้งเดียว
คุณสามารถใช้รหัสแบบใช้ครั้งเดียวได้หลายวิธีตราบใดที่รหัสนั้น คาดเดาไม่ได้ และคุณจะลิงก์รหัสไปยังผู้ใช้หรือหมายเลขโทรศัพท์ได้เมื่อไคลเอ็นต์ จะส่งอุปกรณ์กลับไปที่เซิร์ฟเวอร์ของคุณ คุณควรทำให้รหัสพิมพ์ง่าย รองรับทุกสถานการณ์ที่อาจทำให้ผู้ใช้ต้องพิมพ์รหัสด้วยตนเอง
วิธีหนึ่งในการใช้รหัสแบบใช้ครั้งเดียวคือการสร้างตัวเลขสุ่มที่คุณใช้ เป็นคีย์ในตารางฐานข้อมูล ตัวอย่างเช่น คุณอาจมี PendingVerifis เหมือนตารางต่อไปนี้
รหัส | ผู้ใช้ | วันหมดอายุ |
---|---|---|
123456789... | 1234 | 14-3-2017 1:59 |
คุณสามารถใช้รหัสที่เข้ารหัสฐาน 32 เป็นรหัสแบบใช้ครั้งเดียว
กําลังคํานวณสตริงแฮชของแอป
บริการ 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 ซึ่งเป็นใบรับรองที่คุณนำเข้าด้านบนหรือ URL ที่คุณใช้รับรอง APK โดยตรง โดยจะเป็นสตริงเลขฐาน 16 ตัวพิมพ์เล็ก
เช่น หากต้องการรับสตริงเลขฐาน 16 จากคีย์สโตร์ชั่วคราวที่สร้างขึ้น ด้านบน ให้พิมพ์คำสั่งต่อไปนี้
keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
หากคุณรับรอง APK โดยตรง ให้ระบุคีย์สโตร์เวอร์ชันที่ใช้งานจริงและ ชื่อแทนใบรับรอง
หากคุณสร้างคีย์สโตร์ชั่วคราว ให้ลบออก
เพิ่มสตริงเลขฐาน 16 ต่อท้ายชื่อแพ็กเกจของแอป โดยคั่นด้วยสตริงเดียว พื้นที่ทำงาน
คำนวณผลรวมของ SHA-256 ของสตริงที่รวมกัน อย่าลืมนำ ช่องว่างขึ้นต้นหรือต่อท้ายจากสตริงก่อนคำนวณ SHA-256 ผลรวม
เข้ารหัส Base64 ของค่าฐานสองของผลรวม SHA-256 คุณอาจต้องถอดรหัส ผลรวม SHA-256 จากรูปแบบเอาต์พุตก่อน
สตริงแฮชของแอปคืออักขระ 11 ตัวแรกที่เข้ารหัส base64 แฮช
คำสั่งต่อไปนี้จะคำนวณสตริงแฮชจากเวอร์ชันที่ใช้งานจริงของแอป คีย์สโตร์:
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 Retriever แต่หากคุณใช้คลาสตัวช่วย อย่าลืมนำสตริงออกจากแอปหลังจากได้รับสตริงแฮช อย่าใช้ สตริงแฮชที่คำนวณแบบไดนามิกในไคลเอ็นต์ในข้อความยืนยัน
2. ส่งข้อความยืนยันทาง SMS
หลังจากที่คุณสร้างข้อความยืนยัน ให้ส่งข้อความไปยัง หมายเลขโทรศัพท์โดยใช้ระบบ SMS ใดก็ได้
เช่น ดูการยืนยันแอปโดยใช้ Twilio SMS ในเว็บไซต์ของนักพัฒนาซอฟต์แวร์ Twilio
เมื่ออุปกรณ์ของผู้ใช้ได้รับข้อความนี้ ระบบจะส่งข้อความไปที่ แอป แอปของคุณแยกโค้ดแบบใช้ครั้งเดียวและส่งกลับไปยังเซิร์ฟเวอร์เพื่อ โปรดทำตามขั้นตอนการยืนยันให้เสร็จสมบูรณ์
3. ยืนยันรหัสแบบใช้ครั้งเดียวเมื่อได้รับคืน
โดยทั่วไปแล้ว เซิร์ฟเวอร์การยืนยันหมายเลขโทรศัพท์จะมีปลายทางที่ 2 ที่ใช้ เพื่อรับรหัสแบบใช้ครั้งเดียวคืนจากแอปไคลเอ็นต์ เมื่อเซิร์ฟเวอร์ของคุณได้รับ โค้ดแบบใช้ครั้งเดียวจากแอปของคุณที่ปลายทางนี้ ให้ทำดังนี้
- ยืนยันว่ารหัสแบบใช้ครั้งเดียวถูกต้องและยังไม่หมดอายุ
- โปรดบันทึกว่าผู้ใช้ที่ลิงก์กับรหัสแบบใช้งานครั้งเดียวได้กรอกหมายเลขโทรศัพท์แล้ว การยืนยันของคุณ
- นำบันทึกฐานข้อมูลของโค้ดแบบใช้ครั้งเดียวออก และตรวจสอบด้วยวิธีอื่นว่า รหัสเดิมจะใช้ไม่ได้อีก
เมื่อคุณบันทึกสถานะการยืนยันของผู้ใช้และนำรหัสแบบใช้ครั้งเดียวออกจาก ฐานข้อมูลของคุณ การยืนยันเสร็จสมบูรณ์แล้ว