İçeriğe geç
OmniChannels.ai

SMS ile OTP Otomatik Doldurma: Android, iOS ve Web Formatları

OTP otomatik doldurma Android, iOS ve webde nasıl çalışır: SMS Retriever hash'i, alana bağlı kodlar, WebOTP, üç platforma uyan tek mesaj ve WhatsApp.

Güncelleme 9 dk okuma

Yazar: OmniChannels.ai Editorial Team · İnceleyen: BroadNet Messaging Solutions Team

Entegrasyon

Kısa yanıt

OTP otomatik doldurma, birbirinden ayrı üç mekanizmadan oluşur. Android uygulamaları, en fazla 140 baytlık bir mesajda 11 karakterlik uygulama hash'i isteyen SMS Retriever API'yi ya da hash gerektirmeyen SMS User Consent API'yi kullanır. iOS kodları SMS'in kendisinden önerir; alana bağlı kodlar @example.com #123456 gibi bir satırla biter. Web siteleri autocomplete="one-time-code" ve WebOTP API'yi kullanır; ikisi de aynı son satırı okur.

Bu sayfada
  1. OTP otomatik doldurma her platformda nasıl çalışır?
  2. Android SMS Retriever API nasıl çalışır?
  3. iOS ve iPadOS kodu nasıl otomatik doldurur?
  4. Webde OTP otomatik doldurma nasıl çalışır?
  5. Tek bir SMS Android, iOS ve webde çalışabilir mi?
  6. Arapça ve Unicode metin için ne yapmalı?
  7. WhatsApp kimlik doğrulama şablonları otomatik doldurmayı nasıl ele alır?
  8. Uygulamalı örnek: bir araç çağırma uygulamasında giriş
  9. Sık yapılan hatalar nelerdir?
  10. OmniChannels.ai nasıl yardımcı olur?

Öne çıkan noktalar

  • Android'de iki API vardır: SMS Retriever (tek kullanımlık kod ve 11 karakterlik uygulama hash'i içeren, en fazla 140 baytlık mesaj) ve SMS User Consent (kullanıcı tek bir mesajın paylaşılmasını onaylar).
  • iOS'ta alanı one-time-code içerik türüne ayarlayın; alana bağlı kodlar @alan_adı, boşluk ve #kod biçiminde bir son satırla biter ve iOS 14'ten itibaren desteklenir.
  • Webde girişe autocomplete="one-time-code" ekleyin ve Android'deki Chrome için sms taşıma yöntemiyle navigator.credentials.get çağırın; Safari özniteliği kullanır.
  • Uygulama hash'i son satırdaki @alan_adı #kod satırının üstünde durursa tek mesaj üçünü de karşılayabilir; yine de gerçek cihazlarda ve operatörlerde test edin.
  • WhatsApp kimlik doğrulama şablonları kodu kopyala, tek dokunuş ve sıfır dokunuş düğmeleri sunar; sıfır dokunuş yalnızca Android'dedir.

Bu rehber, doğrulama kodunun Android, iPhone ve webde kendiliğinden dolmasını isteyen geliştiriciler ile ürün sahipleri içindir. Her platformun SMS'ten ne beklediğini, üçüne birden hizmet eden tek bir mesajın nasıl yazılacağını, WhatsApp kimlik doğrulama şablonlarının otomatik doldurmayı nasıl ele aldığını ve genellikle neyin bozulduğunu anlatır.

OTP otomatik doldurma her platformda nasıl çalışır?

Her platform SMS'i farklı okur, bu yüzden tek bir anahtar yoktur. Android ya uygulama hash'ine ya da kullanıcının onayına ihtiyaç duyar, iOS kodları kendisi algılar, tarayıcılar ise biçimlendirilmiş bir son satırı okur.

Platform Mekanizma SMS'in içermesi gerekenler Kullanıcı eylemi
Android uygulaması SMS Retriever API En fazla 140 bayt, tek kullanımlık bir kod ve 11 karakterlik uygulama hash'i Yok
Android uygulaması SMS User Consent API Tek kullanımlık bir kod içeren mesaj Tek bir mesajın paylaşılmasını onaylar
iOS ve iPadOS uygulaması Security code AutoFill iOS'un algılayabileceği bir kod; alana bağlı format önerilir Öneriye dokunur
Web (Safari) autocomplete="one-time-code" Alana bağlı son satır Öneriye dokunur
Web (Android'de Chrome) WebOTP API Son satır @host #kod İstemi onaylar

Hepsi yalnızca SMS'iniz ulaşırsa işe yarar. Ulaşmıyorsa OTP gelmiyor sorun giderme yazısına bakın.

Android SMS Retriever API nasıl çalışır?

Uygulamanız Google Play hizmetlerinden tek bir mesajı dinlemesini ister ve mesaj, uygulamanızı tanımlayan bir hash taşır. Ek bir uygulama izni gerekmez.

Google'ın belgeleri doğrulama mesajı için üç koşul sayar. Mesaj:

  1. 140 bayttan uzun olmamalı;
  2. uygulamanızın doğrulamayı tamamlamak için sunucunuza geri gönderdiği tek kullanımlık bir kod içermeli;
  3. uygulamanızı tanımlayan 11 karakterlik bir hash dizesi içermeli.

Mesajın geri kalanı size kalmıştır. Akış şöyledir: uygulama SMS'i beklerken API'yi başlatır, sunucunuz mesajı gönderir, Play hizmetleri onu uygulamanıza yönlendirir, uygulama kodu ayıklar ve doğrulama için sunucunuza döndürür. Sunucunuz ayrıca kodun geçerli olduğunu ve süresinin dolmadığını da denetlemelidir.

11 karakterlik hash'i nasıl alırım?

Google'a göre hash, base64 ile kodlanmış bir hash'in ilk 11 karakteridir. Uygulamanızın imza sertifikasından hesaplanır; Google'ın belgelerindeki keytool adımları kullanılır. Uygulama imzalamayı Google Play yönetiyorsa hesaplama için o sertifikayı içe aktarın. Doğrudan siz imzalıyorsanız üretim anahtar deponuzu ve sertifika takma adını kullanın.

Hash imza sertifikasına bağlı olduğundan, farklı bir anahtarla imzalanmış sürümün hash'i de farklı olur. Hata ayıklama sürümlerini üretim mesajlarıyla test ederken bunu hesaba katın ve yayınladığınız her imza yapılandırması için hash'i doğrulayın.

Hash yönetmek istemezsem ne yapmalıyım?

SMS User Consent API'yi kullanın. Google'ın belgelerine göre kullanıcıya mesaj paylaşılmadan önce sorulur, ardından mesajın tamamı uygulamanıza açılır ve uygulama kodu ondan ayıklar. Google'ın sayfasına göre mesajda en az bir rakam içeren 4-10 karakterlik alfanümerik bir dize bulunmalı, dinleyici beş dakika boyunca etkin kalır ve isteğe bağlı olarak bir gönderenle sınırlayabilirsiniz. API'yi SMS gelmeden önce başlatın: daha önce alınan mesajlar iletilmez.

iOS ve iPadOS kodu nasıl otomatik doldurur?

iOS, tek kullanımlık kod içeren bir SMS'i algılar ve kendini kod alanı olarak tanımlayan alanlarda önerir. Apple sizin için iki adım belgeler.

  1. Alanın içerik türünü ayarlayın. UIKit'te textContentType değerini .oneTimeCode yapın. SwiftUI'da aynı değerle textContentType değiştiricisini kullanın. Web sitesi için girişe autocomplete="one-time-code" ekleyin.
  2. İsteğe bağlı olarak kodu alan adınıza bağlayın. iOS 14 ve macOS Big Sur'dan itibaren Apple, SMS'i AutoFill kodu yalnızca Safari'deki site ya da uygulamanın ilişkili alan adı eşleştiğinde önerecek şekilde biçimlendirmenize izin verir. Bu, birinin kodu bir kimlik avı sitesine girmeye kandırılmasını zorlaştırır.

Apple'ın belgelediği format: önce herhangi bir metin, ardından başına @ konmuş alan adınız, bir boşluk ve başına # konmuş kodun yer aldığı son satır.

Your Example code is 123456.

@example.com #123456

Uygulama için bağlı alan adını uygulamanın ilişkili alan adlarına (associated domains) ekleyin; yoksa AutoFill kodu önermez. Bağlama olmayan standart kodlar yine algılanır, ancak Apple alana bağlı formatı önerir.

Webde OTP otomatik doldurma nasıl çalışır?

Önce özniteliği ekleyin, ardından bunu destekleyen tarayıcılar için JavaScript'i.

<input type="text" inputmode="numeric"
       autocomplete="one-time-code" name="otp" />

Chrome'un belgeleri tarayıcılar arası uyumluluk için özniteliği önerir ve Safari'nin WebOTP JavaScript API'sine sahip olmasa da doğru biçimlendirilmiş bir SMS'ten kodu önermek için bu özniteliği kullandığını belirtir.

Android'deki Chrome için WebOTP'yi sms taşıma yöntemiyle çağırın. API güvenli bir kaynak (HTTPS) gerektirir; AbortController ise kullanıcı kodu elle yazarsa bekleyen isteği iptal etmenizi sağlar.

if ("OTPCredential" in window) {
  const ac = new AbortController();
  const form = document.querySelector("form");
  const input = document.querySelector("input[autocomplete=one-time-code]");

  form.addEventListener("submit", () => ac.abort());

  navigator.credentials
    .get({ otp: { transport: ["sms"] }, signal: ac.signal })
    .then((otp) => {
      input.value = otp.code;
      form.submit();
    })
    .catch(() => {}); // user dismissed, or no matching SMS
}

SMS, WICG spesifikasyonundaki ve Chrome rehberindeki kaynağa bağlı formata uymalıdır: son satırdan önce en az bir rakam içeren dört ila on alfanümerik karakterlik bir kod, ardından @, host, tek bir boşluk ve # ile kodla başlayan bir son satır. Host boşluk içermemelidir.

Tek bir SMS Android, iOS ve webde çalışabilir mi?

Çoğu zaman evet, çünkü kurallar uyumludur. Okunabilir metni başa, Android hash'ini sonun bir üst satırına, alana bağlı satırı ise en sona koyun. Bu düzen belgelenmiş kurallardan türetilmiştir, bir sağlayıcı garantisi değildir; bu yüzden test edin.

Your Example code is 483921. Do not share it.
Ab3dE+9xYz1
@example.com #483921

Bu sıranın nedeni: Apple ve web spesifikasyonu alan adını ve kodu son satırda ister. Google 11 karakterlik hash'in mesajın bir yerinde olmasını şart koşar, ancak baktığımız sayfada konumunu sabitlemez. Yukarıdaki örnek düz Latin karakterlerle 78 bayttır; 140 baytlık sınırın rahatça içindedir.

Yayına almadan önce kontrol listesi:

  1. Kod tek bir parçadır ve metindeki diğer rakamlardan açıkça ayrılmıştır.
  2. Son satırdaki alan adı siteyle ve uygulamanın ilişkili alan adıyla eşleşir.
  3. Retriever varyantı için toplam uzunluk 140 baytın içindedir.
  4. Hash, test edilen sürümün imza anahtarıyla eşleşir.
  5. Her platformdan bir telefonda ve gerçekten kullandığınız operatörlerde test edilmiştir.

Arapça ve Unicode metin için ne yapmalı?

Kodu ve iki makine tarafından okunan bölümü sade tutun. Google'ın sınırı bayt cinsindendir ve Unicode bir SMS, GSM-7 olanından çok daha az karakter alır: tek parçada 70'e karşı 160 (SMS karakter sınırları ve Unicode yazısına bakın). Bu yüzden Arapça bir cümle bütçeyi hızla tüketir ve GSM-7 dışı tek bir karakter mesajın tamamını Unicode'a çevirir.

Güvenli yaklaşım: kodu Latin rakamlarla yazın, @alan_adı #kod kısmını ASCII tutun ve Arapça ifadeyi kısa bırakın. Başka rakam sistemleriyle yazılmış kodların otomatik doldurulmasını anlatan resmî bir belge bulamadık; bu yüzden konuyu dışarıda bırakıyor ve kullanmadan önce test etmenizi öneriyoruz.

WhatsApp kimlik doğrulama şablonları otomatik doldurmayı nasıl ele alır?

Meta'nın kimlik doğrulama şablonları üç düğme stiliyle gelir ve her birinin gövde metni sabittir: <code> is your verification code.

Düğme Ne yapar Notlar
Kodu kopyala Kullanıcı kodu kopyalamak için dokunur, sonra uygulamanıza yapıştırır Uygulamada değişiklik gerektirmez
Tek dokunuşla otomatik doldurma Android'de düğme uygulamanızı açar ve kodu iletir supported_apps içinde package_name ve signature_hash gerekir
Sıfır dokunuş Düğme yok; WhatsApp istemcisi kodu uygulamanıza yayınlar Yalnızca Android; Meta'nın sıfır dokunuş koşullarını kabul etmeniz gerekir

Meta'nın belgeleri ayrıca iOS 26 ve sonrasında klavye önerilerinin entegrasyon olmadan otomatik doldurma sağladığını ve sıfır dokunuşu desteklemeyen platformlardaki kullanıcıların kodu kopyala düğmesi aldığını belirtir. code_expiration_minutes ile bir geçerlilik süresi belirleyebilirsiniz; önizleme API'si 1 ila 90 dakika arasındaki değerleri kabul eder. Kanalları WhatsApp OTP ve SMS OTP yazısında karşılaştırın.

Uygulamalı örnek: bir araç çağırma uygulamasında giriş

"Qafila Rides" (kurgusal), bir Android uygulaması, bir iOS uygulaması ve qafila.example adresinde bir mobil siteye sahip.

  1. Android uygulaması, kullanıcı "Kodu gönder"e dokunduğunda SMS Retriever'ı başlatır.
  2. Arka uç, birkaç dakika geçerli altı haneli bir kod üretir ve yukarıdaki üç satırlı mesajı SMS API ile gönderir.
  3. Android mesajı uygulamaya iletir. iOS kodu klavyenin üstünde sunar. Mobil sitede Safari kodu önerir, Chrome ise WebOTP ile doldurur.
  4. Sunucu kodu bir kez doğrular, yeniden kullanımı ve süresi dolmuş kodları reddeder ve istekleri hız sınırına tabi tutar.
  5. SMS kısa bir zaman aşımı içinde doğrulanmazsa arka uç ikinci yol olarak bir WhatsApp kimlik doğrulama şablonu sunar.

Sık yapılan hatalar nelerdir?

  • Kodun yalnız olmaması. Kodun yanındaki ek sayılar (telefon, fiyat, tarih) algılamayı şaşırtır. Her mesajda tek kod kullanın.
  • Yanlış hash. Hash imza sertifikasını izler. Hata ayıklama anahtarından alınan hash, üretim sürümüyle eşleşmez.
  • Alan adı uyuşmazlığı. @example.com, site ya da ilişkili alan adıyla eşleşmelidir; aksi halde iOS ve WebOTP kodu sunmaz.
  • Bozuk son satır. #kod'dan sonra gelen herhangi bir şey, eksik bir boşluk veya alan adı içindeki boşluk formatı bozar.
  • Çok uzun ya da Unicode ağırlıklı mesaj, 140 baytlık Retriever sınırını aşar.
  • Geç dinlemeye başlamak. User Consent API, başlamadan önce alınan mesajları yok sayar.
  • Otomatik doldurmayı güvenlik saymak. Otomatik doldurma bir kolaylıktır. Yine de sunucu tarafında doğrulayın, kodların süresini dolurun, deneme sayısını sınırlayın ve SMS pumping dolandırıcılığına dikkat edin.
  • Kapsam. Bu rehber, yazıldığı andaki belgelenmiş davranışı kapsar. Platform kuralları değişir; yayından önce bağlantılı kaynakları kontrol edin.

Mesaj metni ve geçerlilik süresi seçimleri için OTP ve kimlik doğrulama mesajları rehberimize bakın.

OmniChannels.ai nasıl yardımcı olur?

OmniChannels.ai, BroadNet'in doğrudan operatör bağlantısı üzerinden OTP'yi SMS ve WhatsApp ile gönderir; böylece otomatik doldurma formatınızın dayandığı mesaj metnini birebir kontrol edebilirsiniz. WhatsApp şablonları kodu kopyala, tek dokunuş ve sıfır dokunuş kimlik doğrulamayı kapsar. Kanal yedeklemesi, örneğin önce WhatsApp sonra SMS, kullanım senaryosu başına yapılandırılır ve iletim durumları tek bir webhook formatıyla gelir. SMS API belgelerine, WhatsApp API belgelerine ve OTP çözümüne bakın.

Sık sorulan sorular

SMS Retriever API mesaj formatı nedir?

Google'ın belgelerine göre mesaj 140 bayttan uzun olmamalı, uygulamanızın sunucunuza geri gönderdiği tek kullanımlık bir kod içermeli ve uygulamanızı tanımlayan 11 karakterlik bir hash taşımalıdır. Bunun dışında içerik size kalmıştır. Hash, Google Play hizmetlerinin mesajı ek izin olmadan doğru uygulamaya yönlendirmesini sağlar.

SMS User Consent API için uygulama hash'ine ihtiyacım var mı?

Google'ın SMS User Consent API genel bakışı bir uygulama hash'inden söz etmez. Bunun yerine kullanıcı bir istem görür ve mesajı uygulamanızla paylaşıp paylaşmayacağını seçer. Uygulamanız SMS gelmeden önce dinlemeye başlamalıdır; kodu da mesaj metninden kendisi ayıklar.

iOS'ta alana bağlı SMS kodu nedir?

Son satırı kodu alan adınıza bağlayan bir SMS'tir: başına @ konmuş alan adı, bir boşluk ve başına # konmuş kod. Apple bunu iOS 14 ve sonrası için belgelemiştir. AutoFill kodu yalnızca Safari'deki site ya da uygulamanın ilişkili alan adı mesajdaki alan adıyla eşleşirse önerir.

WebOTP SMS'i nasıl okur?

Sayfa, otp seçeneği ve sms taşıma yöntemiyle navigator.credentials.get çağırır. Son satırı @host #kod olan ve host'u sayfa kaynağıyla eşleşen bir mesaj gelince tarayıcı kullanıcıdan onay ister ve kodu döndürür. HTTPS gerekir; belgelenmiş tarayıcı Android'deki Chrome'dur.

OTP'm neden otomatik dolmuyor?

Olağan nedenler şunlardır: açıkça ayırt edilemeyen bir kod, Android'de yanlış ya da eksik uygulama hash'i, @alan_adı #kod biçimine uymayan bir son satır, sayfayla eşleşmeyen bir alan adı veya mesajı bayt sınırının üstüne çıkaran metin. Her birini format kurallarına göre kontrol edin, sonra gerçek bir telefonda test edin.

WhatsApp OTP otomatik doldurmayı destekliyor mu?

Evet. Meta'nın kimlik doğrulama şablonları kodu kopyala düğmesini, tek dokunuşla otomatik doldurma düğmesini ve sıfır dokunuş seçeneğini destekler. Tek dokunuş ve sıfır dokunuş için Android paket adınız ve imza hash'iniz gerekir. Sıfır dokunuş yalnızca Android'de desteklenir; diğer platformlardaki kullanıcılar kodu kopyala düğmesi alır.

Kaynaklar

  1. SMS Retriever API: perform SMS verification — Google for Developers
  2. SMS User Consent API: request a one-time code — Google for Developers
  3. Enabling AutoFill for domain-bound SMS codes — Apple Developer
  4. Verify phone numbers on the web with the WebOTP API — Chrome for Developers
  5. WebOTP API — WICG specification
  6. Authentication templates — WhatsApp Business Platform, Meta for Developers