Sunucuda SMS Doğrulaması Yapın

Telefon numaralarını otomatik olarak doğrulamak için, doğrulama akışının hem istemci hem de sunucu bölümlerini uygulamanız gerekir. Bu belge, sunucu kısmının nasıl uygulanacağını açıklamaktadır.

Telefon doğrulama sunucusu üç görevden sorumludur:

  1. Tek seferlik bir kod içeren ve istemci tarafı SMS Retriever API'nin beklediği biçime sahip bir doğrulama mesajı oluşturma
  2. Doğrulama mesajını kullanıcının cihazına gönderme
  3. Sunucuya geri gönderildiğinde tek seferlik kodu doğrulama ve arka ucunuzun gerektirdiği doğrulama sonrası görevleri tamamlama

Uygulamanızın sunucuyla nasıl etkileşime gireceğinin ayrıntıları size bağlıdır. Yaygın bir yaklaşım, iki uç noktaya sahip bir REST API'sini ifşa etmektir: Biri belirli bir telefon numarasını doğrulama isteklerini alan ve SMS doğrulama mesajlarını gönderen ve uygulamanızdan bir kerelik kodlar alan ikinci bir uç nokta.

1. Bir doğrulama mesajı oluşturun

Sunucunuz bir telefon numarasını doğrulama isteği aldığında, önce kullanıcının cihazına göndereceğiniz doğrulama mesajını oluşturun. Bu mesaj şunları yapmalıdır:

Aksi takdirde, doğrulama mesajının içeriği ne seçerseniz seçin olabilir. Tek seferlik kodu daha sonra kolayca çıkarabileceğiniz bir mesaj oluşturmak faydalıdır. Örneğin, geçerli bir doğrulama mesajı aşağıdaki gibi görünebilir:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Tek seferlik bir kod oluşturmak

Kodlar anlaşılmaz olduğu ve istemci uygulaması bunları sunucunuza geri gönderdiğinde kodları bir kullanıcıya veya telefon numarasına bağlayabildiğiniz sürece, tek seferlik kodları birçok şekilde uygulayabilirsiniz. Kullanıcıların kodu manuel olarak yazmasını gerektirebilecek her türlü durumu karşılamak için kodları yazmayı kolaylaştırmalısınız.

Tek seferlik kodları uygulamanın bir yolu, bir veritabanı tablosunda anahtar olarak kullandığınız rastgele sayılar üretmektir. Örneğin, aşağıdaki gibi bir PendingVerifications tablonuz olabilir:

İD Kullanıcı Son
123456789 ... 1234 2017-3-14 1:59

Base32 kodlu kimliği bir kerelik kod olarak kullanabilirsiniz.

Uygulamanızın karma dizesini hesaplama

Google Play hizmetleri, uygulamanıza hangi doğrulama mesajlarının gönderileceğini belirlemek için karma dizeyi kullanır. Karma dizesi, uygulamanızın paket adından ve uygulamanızın genel anahtar sertifikasından oluşur. Hash dizesini oluşturmak için:

  1. Google Play'den uygulama imzalamayı kullanıyorsanız, Google Play konsolunun Uygulama imzalama bölümünden uygulama imzalama sertifikanızı ( deployment_cert.der ) indirin.

    Ardından, uygulama imzalama sertifikasını geçici bir anahtar deposuna aktarın:

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

    APK'larınızı doğrudan imzalarsanız bu adımı atlayın.

  2. Uygulama imzalama sertifikanızı (yukarıda içe aktardığınız sertifika veya APK'larınızı doğrudan imzalamak için kullandığınız sertifika) küçük harfli onaltılık dize olarak alın.

    Örneğin, yukarıda oluşturulan geçici anahtar deposundan onaltılık dizeyi almak için şu komutu yazın:

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

    APK'larınızı doğrudan imzalarsanız, üretim anahtar deponuzu ve sertifika takma adınızı belirtin.

  3. Geçici bir anahtar deposu oluşturduysanız silin.

  4. Onaltılık dizeyi tek bir boşlukla ayırarak uygulamanızın paket adına ekleyin.

  5. Birleşik dizenin SHA-256 toplamını hesaplayın. SHA-256 toplamını hesaplamadan önce dizeden baştaki veya sondaki beyaz boşlukları kaldırdığınızdan emin olun.

  6. Base64, SHA-256 toplamının ikili değerini kodlayın. Önce SHA-256 toplamının kodunu çıktı biçiminden çözmeniz gerekebilir.

  7. Uygulamanızın karma dizesi, base64 kodlu karmanın ilk 11 karakteridir.

Aşağıdaki komut, uygulamanızın üretim anahtar deposundaki hash dizesini hesaplar:

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

Alternatif olarak, SMS alıcısı örnek uygulamasından AppSignatureHelper sınıfıyla uygulamanızın karma dizesini alabilirsiniz. Ancak yardımcı sınıfı kullanırsanız, karma dizesini aldıktan sonra bunu uygulamanızdan kaldırdığınızdan emin olun. Doğrulama mesajlarınızda istemcide dinamik olarak hesaplanan karma dizeleri kullanmayın.

2. Doğrulama mesajını SMS ile gönderin

Doğrulama mesajını oluşturduktan sonra, mesajı herhangi bir SMS sistemi kullanarak kullanıcının telefon numarasına gönderin.

Örneğin, Twilio'nun geliştirici sitesinde Twilio SMS kullanarak uygulama doğrulama konusuna bakın.

Kullanıcının cihazı bu mesajı aldığında, mesaj uygulamanıza yönlendirilir. Uygulamanız bir kerelik kodu çıkarır ve doğrulama işlemini tamamlamak için sunucunuza geri gönderir.

3. Döndüğünde tek seferlik kodu doğrulayın

Bir telefon numarası doğrulama sunucusu, genellikle istemci uygulamalarından bir kerelik kodları geri almak için kullandığı ikinci bir uç noktaya sahiptir. Sunucunuz bu uç noktada uygulamanızdan tek seferlik bir kod aldığında aşağıdakileri yapın:

  1. Tek seferlik kodun geçerli olduğunu ve süresinin dolmadığını doğrulayın.
  2. Tek seferlik koda bağlanan kullanıcının telefon numarası doğrulamasını tamamladığını kaydedin.
  3. Tek seferlik kodun veritabanı kaydını kaldırın veya başka bir şekilde aynı kodun tekrar kullanılamayacağından emin olun.

Kullanıcının doğrulama durumunu kaydettiğinizde ve bir kerelik kodu veritabanınızdan kaldırdığınızda, doğrulama tamamlanır.