सर्वर पर एसएमएस की पुष्टि करें

फ़ोन नंबर की अपने-आप पुष्टि हो सके, इसके लिए आपको पुष्टि की प्रोसेस के क्लाइंट और सर्वर, दोनों हिस्सों को लागू करना होगा. इस दस्तावेज़ में सर्वर वाले हिस्से को लागू करने का तरीका बताया गया है.

फ़ोन नंबर की पुष्टि करने वाला सर्वर, तीन कामों के लिए ज़िम्मेदार है:

  1. पुष्टि करने के लिए ऐसा मैसेज बनाना जिसमें एक बार इस्तेमाल होने वाला कोड शामिल हो. साथ ही, मैसेज का फ़ॉर्मैट ऐसा हो जो क्लाइंट-साइड SMS Retriever API की उम्मीद के मुताबिक हो
  2. उपयोगकर्ता के डिवाइस पर पुष्टि करने का मैसेज भेजा जा रहा है
  3. सर्वर पर वापस भेजे जाने पर, एक बार इस्तेमाल होने वाले कोड की पुष्टि करना और पुष्टि के बाद किए जाने वाले ऐसे सभी टास्क को पूरा करना जो आपके बैकएंड की ज़रूरत है

आपका ऐप्लिकेशन, सर्वर के साथ कैसे इंटरैक्ट करता है, यह तय करने का विकल्प आपके पास होता है. REST API को दो एंडपॉइंट से दिखाना, एक सामान्य तरीका है: पहला, जो दिए गए फ़ोन नंबर की पुष्टि करने के अनुरोध लेता है और मैसेज (एसएमएस) से पुष्टि करने के लिए मैसेज भेजता है. दूसरा एंडपॉइंट, जिसे आपके ऐप्लिकेशन से एक बार इस्तेमाल होने वाले कोड मिलते हैं.

1. पुष्टि करने वाला मैसेज बनाएं

जब आपके सर्वर को किसी फ़ोन नंबर की पुष्टि करने का अनुरोध मिलता है, तो सबसे पहले वह पुष्टि करने का मैसेज तैयार करें जिसे उपयोगकर्ता के डिवाइस पर भेजा जाएगा. इस मैसेज में यह ज़रूरी है कि:

अगर ऐसा नहीं किया जाता है, तो पुष्टि करने वाले मैसेज का कॉन्टेंट चुना जा सकता है. मैसेज बनाना मददगार होता है, जिससे बाद में एक बार इस्तेमाल होने वाले कोड को आसानी से एक्सट्रैक्ट किया जा सकता है. उदाहरण के लिए, पुष्टि करने का एक मान्य मैसेज कुछ ऐसा दिख सकता है:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

एक बार इस्तेमाल होने वाला कोड जनरेट करना

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

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

ID उपयोगकर्ता पासवर्ड इस्तेमाल करने की समय-सीमा
123456789... 1234 14-3-2017 1:59

base32 कोड में बदले गए आईडी को एक बार इस्तेमाल होने वाले कोड के तौर पर इस्तेमाल किया जा सकता है.

अपने ऐप्लिकेशन की हैश स्ट्रिंग की गिनती करना

Google Play services, हैश स्ट्रिंग का इस्तेमाल करके यह तय करता है कि आपके ऐप्लिकेशन पर पुष्टि करने के लिए कौनसे मैसेज भेजे जाएं. हैश स्ट्रिंग आपके ऐप्लिकेशन के पैकेज के नाम और ऐप्लिकेशन के सार्वजनिक पासकोड के सर्टिफ़िकेट से बनाई जाती है. हैश स्ट्रिंग जनरेट करने के लिए:

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

    इसके बाद, ऐप्लिकेशन साइनिंग सर्टिफ़िकेट को किसी अस्थायी कुंजी स्टोर में इंपोर्ट करें:

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

    अगर आपने APKs पर सीधे तौर पर हस्ताक्षर किए हैं, तो इस चरण को छोड़ दें.

  2. अपना ऐप्लिकेशन साइनिंग सर्टिफ़िकेट, लोअर-केस की हेक्स स्ट्रिंग के तौर पर पाएं. भले ही, वह सर्टिफ़िकेट ऊपर इंपोर्ट किया गया हो या जिसका इस्तेमाल सीधे अपने APKs पर साइन करने के लिए किया जाता हो.

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

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

    अगर APK पर सीधे तौर पर हस्ताक्षर किए जाते हैं, तो अपने प्रोडक्शन कीस्टोर और सर्टिफ़िकेट के उपनाम के बारे में बताएं.

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

  4. अपने ऐप्लिकेशन के पैकेज के नाम में हेक्स स्ट्रिंग जोड़ें. इन्हें एक स्पेस से अलग करें.

  5. मिली-जुली स्ट्रिंग के SHA-256 योग का हिसाब लगाएं. SHA-256 योग की गणना करने से पहले स्ट्रिंग से शुरू या आखिर में मौजूद खाली सफ़ेद जगह को हटाना न भूलें.

  6. SHA-256 योग के बाइनरी मान को Base64-एन्कोड करें. आपको पहले SHA-256 योग को उसके आउटपुट फ़ॉर्मैट से डिकोड करना पड़ सकता है.

  7. आपके ऐप्लिकेशन की हैश स्ट्रिंग, base64 कोड में बदले गए हैश के पहले 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 मैसेज (एसएमएस) का इस्तेमाल करके ऐप्लिकेशन की पुष्टि देखें.

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

3. कोड वापस मिलने पर, एक बार इस्तेमाल होने वाले कोड की पुष्टि करें

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

  1. पुष्टि करें कि एक बार इस्तेमाल होने वाला कोड मान्य है और उसकी समयसीमा खत्म नहीं हुई है.
  2. रिकॉर्ड करें कि एक बार इस्तेमाल होने वाले कोड से जुड़े उपयोगकर्ता के फ़ोन नंबर की पुष्टि हो गई है.
  3. एक बार इस्तेमाल होने वाले कोड के डेटाबेस रिकॉर्ड को हटाएं या किसी दूसरे तरीके से पक्का करें कि उस कोड को फिर से इस्तेमाल न किया जा सके.

उपयोगकर्ता की पुष्टि की स्थिति को रिकॉर्ड करने और अपने डेटाबेस से, एक बार इस्तेमाल होने वाले कोड को हटाने के बाद, पुष्टि की प्रोसेस पूरी हो जाती है.