Şifre sıfırlama veya kullanıcı e-posta adresini doğrulama için e-posta işlemleri gönderirken devam URL'si üzerinden durumu iletebilirsiniz. Bu, kullanıcının işlem tamamlandıktan sonra uygulamaya geri dönmesini sağlar. Ayrıca, e-posta işlem bağlantısının yüklendiğinde bir web sayfası yerine doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini belirtebilirsiniz.
Bu özellik, aşağıdaki yaygın senaryolarda son derece faydalı olabilir:
Şu anda oturum açmamış bir kullanıcı, oturum açmasını gerektiren içeriğe erişmeye çalışıyor olabilir. Ancak kullanıcı şifresini unutmuş olabilir ve bu nedenle şifre sıfırlama akışını tetikleyebilir. Akışın sonunda kullanıcı, erişmeye çalıştığı uygulama bölümüne geri dönmeyi bekler.
Uygulamalar yalnızca doğrulanmış hesaplara erişim sunabilir. Örneğin, bir bültene abone olmak isteyen kullanıcının e-posta adresini doğrulaması gerekebilir. Kullanıcı, e-posta doğrulama akışından geçer ve aboneliğini tamamlamak için uygulamaya geri dönmeyi bekler.
Diğer durumlarda ise kullanıcı, akışı mobil cihazından başlatmış olabilir ve doğrulama işleminden sonra tarayıcıya değil, mobil uygulamasına dönmeyi bekleyebilir.
Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde iyileştirebilecek güçlü bir özellik olan devam URL'si aracılığıyla durumu iletme olanağına sahip olabilirsiniz.
E-posta işlemlerinde devam URL'sinin durumunu iletme
Devam URL'sinin güvenli bir şekilde iletilebilmesi için URL'nin alanının Firebase konsolunda beyaz listeye eklenmesi gerekir. Bu işlem, Kimlik doğrulama bölümünde, bu alan henüz eklenmemişse Oturum açma yöntemi sekmesindeki Yetkili alanlar listesine eklenerek yapılır.
Şifre sıfırlama e-postası veya doğrulama e-postası gönderirken ActionCodeSettings örneği sağlanmalıdır. Aşağıdaki yöntemleri içeren ilişkili ActionCodeSettings.Builder sınıfıyla oluşturulabilir:
Yöntem | Açıklama |
---|---|
setUrl(String url) |
Farklı bağlamlarda farklı anlamlara gelen bağlantıyı (durum/devam URL'si) ayarlar:
|
setIOSBundleId(String iOSBundleId) |
iOS paket kimliğini, Firebase Authentication'ın Apple cihazda açılan yalnızca web'e özel bir bağlantı mı yoksa mobil bağlantı mı oluşturması gerektiğini belirlemesine yardımcı olacak şekilde ayarlar. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
Firebase Authentication'nın, Android cihazda açılan yalnızca web'e özel bir bağlantı mı yoksa mobil bağlantı mı oluşturması gerektiğini belirlemesine yardımcı olmak için Android paket adını ayarlar. |
setHandleCodeInApp(boolean status) |
E-posta işlem bağlantısının önce bir mobil uygulamada mı yoksa web bağlantısında mı açılacağı. Varsayılan değer false'tur. Doğru olarak ayarlandığında işlem kodu bağlantısı Geçiş Bağlantısı veya Android Uygulama Bağlantısı olarak gönderilir ve yüklüyse uygulama tarafından açılır. Yanlış durumda kod önce web widget'ına gönderilir ve devam edildiğinde yüklüyse uygulamaya yönlendirilir. |
setLinkDomain(String customDomain) |
Bir proje için özel Hosting bağlantı alanları tanımlandığında, bağlantı belirli bir mobil uygulama tarafından açılacaksa hangisinin kullanılacağını belirtin. Aksi takdirde, varsayılan alan otomatik olarak seçilir (örneğin, PROJECT_ID.firebaseapp.com |
setDynamicLinkDomain(String dynamicLinkDomain) |
Kullanımdan kaldırıldı. Bu parametreyi belirtmeyin. |
Aşağıdaki örnekte, önce mobil uygulamada açılacak bir e-posta doğrulama bağlantısının nasıl gönderileceği gösterilmektedir. Derin bağlantı, devam URL'si yükünü http://www.example.com/verify?uid=1234
içerir.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Firebase Hosting bağlantılarını yapılandırma
Firebase Authentication, mobil uygulamada açılması gereken bir bağlantı gönderirken Firebase Hosting kullanır. Bu özelliği kullanmak için Firebase konsolunda barındırma bağlantılarının yapılandırılması gerekir.
Android uygulamalarını yapılandırma:
- Bu bağlantıları Android uygulamanızdan işlemeyi planlıyorsanız uygulamanızın paket adı, Firebase konsol proje ayarlarında belirtilmelidir. Ayrıca, uygulama sertifikasının SHA-1 ve SHA-256'sı da sağlanmalıdır.
- Ayrıca,
AndroidManifest.xml
dosyanızda derin bağlantı için intent filtresini de yapılandırmanız gerekir. - Bu konuyla ilgili daha fazla bilgi için Android barındırma bağlantılarını alma talimatları başlıklı makaleyi inceleyin.
iOS uygulamalarını yapılandırma:
- Bu bağlantıları iOS uygulamanızdan işlemeyi planlıyorsanız Hosting bağlantı alanını uygulama özelliklerinizde İlişkilendirilmiş Alan olarak yapılandırmanız gerekir.
- Bu konu hakkında daha fazla bilgi için iOS barındırma bağlantılarını alma talimatları başlıklı makaleyi inceleyin.
Web uygulamasında e-posta işlemlerini işleme
Mobil uygulama varsa web uygulamasından gelen işlem kodu bağlantısını önce işleyip ardından başarılı bir şekilde tamamlandıktan sonra başka bir web sayfasına veya mobil uygulamaya yönlendirmek isteyip istemediğinizi belirtebilirsiniz.
Bu işlem, ActionCodeSettings.Builder nesnesinde setHandleCodeInApp(false)
çağrılarak yapılır. iOS paket kimliği veya Android paket adı zorunlu olmasa da
bunları sağlamak, kullanıcının e-posta işlem kodu tamamlandığında belirtilen uygulamaya
geri yönlendirilmesine olanak tanır.
Burada kullanılan web URL'si, e-posta işlemi şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir ağ sağlanır. E-posta işlemi işleyicisini özelleştirme hakkında daha fazla bilgi edinmek için E-posta işleyicilerini özelleştirme başlıklı makaleyi inceleyin.
Bu durumda, continueUrl
sorgu parametresindeki bağlantı, yükü ActionCodeSettings
nesnesinde belirtilen URL
olan bir Hosting bağlantısı olur.
E-posta doğrulama gibi e-posta işlemleri gerçekleştirilirken oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode
aracılığıyla uygulanması gerekir.Böylece değişiklik (ör. e-postanın doğrulanması) geçerli olur.
Mobil uygulamada e-posta işlemlerini işleme
Yüklüyse işlem kodu bağlantısını önce mobil uygulamanızda işlemek isteyip istemediğinizi belirtebilirsiniz. Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa bunun yerine bir web sayfasından açılır. Bu işlem, ActionCodeSettings.Builder nesnesinde setHandleCodeInApp(true)
çağrılarak yapılır. Mobil uygulamanın Android paket adı veya iOS paket kimliği de belirtilmelidir.
Mobil uygulama olmadığında kullanılan yedek web URL'si, e-posta işlemi şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir tane sağlanır. E-posta işlemi işleyicisini özelleştirme hakkında daha fazla bilgi edinmek için E-posta işleyicilerini özelleştirme başlıklı makaleyi inceleyin.
Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, Console'da yapılandırılmış ve oobCode
, mode
, apiKey
ve continueUrl
sorgu parametrelerini içeren, yükü işlem kodu URL'si olan bir Hosting bağlantısı olur. İkincisi, ActionCodeSettings
nesnesinde belirtilen orijinal URL
olacaktır. İşlem kodu, e-posta işleyicilerini özelleştirme bölümünde açıklanan web akışında işlendiği şekilde doğrudan bir mobil uygulamadan uygulanabilir.
E-posta doğrulama gibi e-posta işlemleri gerçekleştirilirken oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode
aracılığıyla uygulanması gerekir.Böylece değişiklik (ör. e-postanın doğrulanması) geçerli olur.