ดำเนินการยืนยันทาง SMS บนเซิร์ฟเวอร์

ในการยืนยันหมายเลขโทรศัพท์โดยอัตโนมัติ คุณต้องใช้ทั้งลูกค้าและ ส่วนของขั้นตอนการตรวจสอบเพื่อยืนยัน เอกสารนี้อธิบายวิธี ใช้งานส่วนของเซิร์ฟเวอร์

เซิร์ฟเวอร์การยืนยันทางโทรศัพท์มีหน้าที่รับผิดชอบงาน 3 อย่างดังนี้

  1. การสร้างข้อความยืนยันที่มีรหัสแบบใช้ครั้งเดียวและมี รูปแบบที่ SMS Retriever API ฝั่งไคลเอ็นต์ต้องการ
  2. กำลังส่งข้อความยืนยันไปยังอุปกรณ์ของผู้ใช้
  3. การยืนยันรหัสแบบใช้ครั้งเดียวเมื่อถูกส่งกลับไปยังเซิร์ฟเวอร์และดำเนินการให้เสร็จสิ้น งานหลังการยืนยันที่แบ็กเอนด์ต้องการ

คุณสามารถเลือกได้ว่าจะให้แอปโต้ตอบกับเซิร์ฟเวอร์อย่างไร ทั่วไป คือการเปิดเผย REST API ด้วยปลายทาง 2 จุด โดยปลายทาง 1 ส่วนรับคำขอ เพื่อยืนยันหมายเลขโทรศัพท์และส่งข้อความยืนยันทาง SMS และ ปลายทางที่ 2 ที่ได้รับรหัสแบบใช้ครั้งเดียวจากแอปของคุณ

1. สร้างข้อความยืนยัน

เมื่อเซิร์ฟเวอร์ได้รับคำขอให้ยืนยันหมายเลขโทรศัพท์ ก่อนอื่นให้สร้าง ข้อความยืนยันที่คุณจะส่งไปยังอุปกรณ์ของผู้ใช้ ข้อความนี้ ต้อง

มิฉะนั้น เนื้อหาของข้อความยืนยันจะเป็นอะไรก็ได้ที่คุณเลือก การสร้างข้อความที่คุณสามารถแยกข้อความแบบครั้งเดียวได้อย่างง่ายดายก็มีประโยชน์ โค้ดในภายหลัง ตัวอย่างเช่น ข้อความยืนยันที่ถูกต้องอาจมีลักษณะดังนี้ ดังต่อไปนี้:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

การสร้างรหัสแบบใช้ครั้งเดียว

คุณสามารถใช้รหัสแบบใช้ครั้งเดียวได้หลายวิธีตราบใดที่รหัสนั้น คาดเดาไม่ได้ และคุณจะลิงก์รหัสไปยังผู้ใช้หรือหมายเลขโทรศัพท์ได้เมื่อไคลเอ็นต์ จะส่งอุปกรณ์กลับไปที่เซิร์ฟเวอร์ของคุณ คุณควรทำให้รหัสพิมพ์ง่าย รองรับทุกสถานการณ์ที่อาจทำให้ผู้ใช้ต้องพิมพ์รหัสด้วยตนเอง

วิธีหนึ่งในการใช้รหัสแบบใช้ครั้งเดียวคือการสร้างตัวเลขสุ่มที่คุณใช้ เป็นคีย์ในตารางฐานข้อมูล ตัวอย่างเช่น คุณอาจมี PendingVerifis เหมือนตารางต่อไปนี้

รหัส ผู้ใช้ วันหมดอายุ
123456789... 1234 14-3-2017 1:59

คุณสามารถใช้รหัสที่เข้ารหัสฐาน 32 เป็นรหัสแบบใช้ครั้งเดียว

กําลังคํานวณสตริงแฮชของแอป

บริการ Google Play ใช้สตริงแฮชเพื่อระบุการยืนยัน เพื่อส่งไปยังแอปของคุณ สตริงแฮชนี้สร้างขึ้นจากชื่อแพ็กเกจของแอป และใบรับรองคีย์สาธารณะของแอป วิธีสร้างสตริงแฮช

  1. หากคุณใช้ 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 โดยตรง ให้ข้ามขั้นตอนนี้

  2. รับใบรับรอง App Signing ซึ่งเป็นใบรับรองที่คุณนำเข้าด้านบนหรือ URL ที่คุณใช้รับรอง APK โดยตรง โดยจะเป็นสตริงเลขฐาน 16 ตัวพิมพ์เล็ก

    เช่น หากต้องการรับสตริงเลขฐาน 16 จากคีย์สโตร์ชั่วคราวที่สร้างขึ้น ด้านบน ให้พิมพ์คำสั่งต่อไปนี้

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    หากคุณรับรอง APK โดยตรง ให้ระบุคีย์สโตร์เวอร์ชันที่ใช้งานจริงและ ชื่อแทนใบรับรอง

  3. หากคุณสร้างคีย์สโตร์ชั่วคราว ให้ลบออก

  4. เพิ่มสตริงเลขฐาน 16 ต่อท้ายชื่อแพ็กเกจของแอป โดยคั่นด้วยสตริงเดียว พื้นที่ทำงาน

  5. คำนวณผลรวมของ SHA-256 ของสตริงที่รวมกัน อย่าลืมนำ ช่องว่างขึ้นต้นหรือต่อท้ายจากสตริงก่อนคำนวณ SHA-256 ผลรวม

  6. เข้ารหัส Base64 ของค่าฐานสองของผลรวม SHA-256 คุณอาจต้องถอดรหัส ผลรวม SHA-256 จากรูปแบบเอาต์พุตก่อน

  7. สตริงแฮชของแอปคืออักขระ 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 ที่ใช้ เพื่อรับรหัสแบบใช้ครั้งเดียวคืนจากแอปไคลเอ็นต์ เมื่อเซิร์ฟเวอร์ของคุณได้รับ โค้ดแบบใช้ครั้งเดียวจากแอปของคุณที่ปลายทางนี้ ให้ทำดังนี้

  1. ยืนยันว่ารหัสแบบใช้ครั้งเดียวถูกต้องและยังไม่หมดอายุ
  2. โปรดบันทึกว่าผู้ใช้ที่ลิงก์กับรหัสแบบใช้งานครั้งเดียวได้กรอกหมายเลขโทรศัพท์แล้ว การยืนยันของคุณ
  3. นำบันทึกฐานข้อมูลของโค้ดแบบใช้ครั้งเดียวออก และตรวจสอบด้วยวิธีอื่นว่า รหัสเดิมจะใช้ไม่ได้อีก

เมื่อคุณบันทึกสถานะการยืนยันของผู้ใช้และนำรหัสแบบใช้ครั้งเดียวออกจาก ฐานข้อมูลของคุณ การยืนยันเสร็จสมบูรณ์แล้ว