एक सर्वर पर एसएमएस सत्यापन करें

फ़ोन नंबर को स्वचालित रूप से सत्यापित करने के लिए, आपको सत्यापन प्रवाह के क्लाइंट और सर्वर दोनों भागों को लागू करना होगा। यह दस्तावेज़ वर्णन करता है कि सर्वर भाग को कैसे लागू किया जाए।

फोन सत्यापन सर्वर तीन कार्यों के लिए जिम्मेदार है:

  1. एक सत्यापन संदेश का निर्माण करना जिसमें एक बार का कोड शामिल है और इसमें क्लाइंट-साइड एसएमएस रिट्रीवर एपीआई की अपेक्षा है
  2. उपयोगकर्ता के डिवाइस पर सत्यापन संदेश भेजना
  3. जब यह सर्वर पर वापस भेजा जाता है और आपके बैकएंड की आवश्यकता के बाद सत्यापन के किसी भी कार्य को पूरा करने के लिए एक बार कोड का सत्यापन करना

सर्वर के साथ आपका ऐप कैसे इंटरैक्ट करता है, इसकी बारीकियां आपके ऊपर हैं। एक सामान्य दृष्टिकोण दो एंडपॉइंट के साथ REST एपीआई को उजागर करना है: एक जो किसी दिए गए फोन नंबर को सत्यापित करने के लिए अनुरोध प्राप्त करता है और एसएमएस सत्यापन संदेश भेजता है, और दूसरा एंडपॉइंट जो आपके ऐप से एक-बार कोड प्राप्त करता है।

1. एक सत्यापन संदेश का निर्माण

जब आपका सर्वर किसी फ़ोन नंबर को सत्यापित करने का अनुरोध प्राप्त करता है, तो पहले सत्यापन संदेश का निर्माण करें जिसे आप उपयोगकर्ता के डिवाइस पर भेजेंगे। यह संदेश होना चाहिए:

अन्यथा, सत्यापन संदेश की सामग्री आपके द्वारा चुने गए कुछ भी हो सकती है। यह एक संदेश बनाने में मददगार है जिससे आप बाद में एक बार का कोड आसानी से निकाल सकते हैं। उदाहरण के लिए, एक मान्य सत्यापन संदेश निम्न की तरह लग सकता है:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

एक बार कोड जनरेट करना

आप एक बार के कोड को कई तरीकों से लागू कर सकते हैं, जब तक कि कोड अजेय हैं और आप कोड को किसी उपयोगकर्ता या फोन नंबर से लिंक कर सकते हैं जब क्लाइंट ऐप उन्हें आपके सर्वर पर वापस भेजता है। आपको किसी भी स्थिति को समायोजित करने के लिए कोड को टाइप करना आसान बनाना चाहिए, जिससे उपयोगकर्ताओं को मैन्युअल रूप से कोड टाइप करना पड़ सकता है।

एक बार के कोड को लागू करने का एक तरीका यादृच्छिक संख्याओं को उत्पन्न करना है, जिसे आप डेटाबेस तालिका में कुंजी के रूप में उपयोग करते हैं। उदाहरण के लिए, आपके पास निम्न की तरह PendingVerifications तालिका हो सकती है:

ईद उपयोगकर्ता समय सीमा समाप्ति
123456789 ... 1234 2017-3-14 1:59

आप आधार-एनकोडेड आईडी का उपयोग एक बार के कोड के रूप में कर सकते हैं।

अपने ऐप के हैश स्ट्रिंग को कम्प्यूट करना

Google Play सेवाएं आपके ऐप पर भेजने के लिए सत्यापन संदेशों का निर्धारण करने के लिए हैश स्ट्रिंग का उपयोग करती हैं। हैश स्ट्रिंग आपके ऐप के पैकेज के नाम और आपके ऐप के सार्वजनिक कुंजी प्रमाणपत्र से बना है। हैश स्ट्रिंग उत्पन्न करने के लिए:

  1. यदि आप Google Play द्वारा ऐप साइनिंग का उपयोग करते हैं, तो Google Play कंसोल के ऐप साइनिंग सेक्शन से अपना ऐप साइनिंग सर्टिफ़िकेट ( deployment_cert.der ) डाउनलोड करें।

    फिर, एक अस्थायी कुंजी स्टोर में एप्लिकेशन साइनिंग प्रमाणपत्र आयात करें:

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    यदि आप सीधे अपने APK पर हस्ताक्षर करते हैं, तो इस चरण को छोड़ दें।

  2. अपना ऐप साइनिंग सर्टिफिकेट प्राप्त करें- या तो आपने ऊपर जो इम्पोर्ट किया है या जो आप अपने एपीके को सीधे साइन करने के लिए उपयोग करते हैं - एक लोअर-केस हेक्स स्ट्रिंग के रूप में।

    उदाहरण के लिए, ऊपर बनाए गए अस्थायी कीस्टोर से हेक्स स्ट्रिंग प्राप्त करने के लिए, निम्न कमांड टाइप करें:

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

    यदि आप सीधे अपने APK पर हस्ताक्षर करते हैं, तो अपने उत्पादन कीस्टॉर और प्रमाणपत्र उपनाम को निर्दिष्ट करें।

  3. यदि आपने एक अस्थायी कीस्टॉर बनाया है, तो उसे हटा दें।

  4. एक ही स्थान द्वारा अलग किए गए अपने ऐप के पैकेज नाम के लिए हेक्स स्ट्रिंग को जोड़ें।

  5. संयुक्त स्ट्रिंग के SHA-256 योग की गणना करें। SHA-256 राशि की गणना करने से पहले स्ट्रिंग से किसी भी प्रमुख या अनुगामी व्हाट्सएप को निकालना सुनिश्चित करें।

  6. Base64-SHA-256 योग के द्विआधारी मान को एनकोड करें। आपको पहले इसके आउटपुट प्रारूप से SHA-256 राशि को डिकोड करना पड़ सकता है।

  7. आपके ऐप का हैश स्ट्रिंग, बेस 64-एन्कोडेड हैश के पहले 11 अक्षर हैं।

निम्न कमांड आपके ऐप के प्रोडक्शन कीस्टोर से हैश स्ट्रिंग की गणना करता है:

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 वर्ग के साथ एसएमएस रिट्रीवर नमूना ऐप से प्राप्त कर सकते हैं। हालाँकि, यदि आप सहायक वर्ग का उपयोग करते हैं, तो हैश स्ट्रिंग प्राप्त करने के बाद इसे अपने ऐप से हटा दें। अपने सत्यापन संदेशों में क्लाइंट पर गतिशील रूप से गणना किए गए हैश स्ट्रिंग्स का उपयोग न करें।

2. एसएमएस द्वारा सत्यापन संदेश भेजें

सत्यापन संदेश का निर्माण करने के बाद, किसी भी एसएमएस प्रणाली का उपयोग करके उपयोगकर्ता के फ़ोन नंबर पर संदेश भेजें।

उदाहरण के लिए, Twilio की डेवलपर साइट पर Twilio SMS का उपयोग करके ऐप सत्यापन देखें।

जब उपयोगकर्ता का डिवाइस यह संदेश प्राप्त करता है, तो संदेश आपके ऐप पर निर्देशित किया जाता है। आपका ऐप वन-टाइम कोड निकालता है और सत्यापन प्रक्रिया को पूरा करने के लिए इसे आपके सर्वर पर वापस भेजता है।

3. जब वह वापस लौटे तो एक बार कोड को सत्यापित करें

फ़ोन नंबर सत्यापन सर्वर में आम तौर पर एक दूसरा समापन बिंदु होता है जो क्लाइंट ऐप्स से एक बार कोड प्राप्त करने के लिए उपयोग करता है। जब आपका सर्वर इस समापन बिंदु पर आपके ऐप से एक बार कोड प्राप्त करता है, तो निम्न कार्य करें:

  1. सत्यापित करें कि वन-टाइम कोड वैध है और इसकी समय सीमा समाप्त नहीं हुई है।
  2. रिकॉर्ड करें कि उपयोगकर्ता ने वन-टाइम कोड से लिंक किया है, जिसने फ़ोन नंबर सत्यापन पूरा किया है।
  3. एक बार कोड के डेटाबेस रिकॉर्ड को निकालें, या किसी अन्य तरीके से सुनिश्चित करें कि उसी कोड का फिर से उपयोग नहीं किया जा सकता है।

जब आप उपयोगकर्ता की सत्यापन स्थिति रिकॉर्ड करते हैं और अपने डेटाबेस से एक बार कोड निकालते हैं, तो सत्यापन पूरा हो जाता है।