Şifre sıfırlama için e-posta işlemleri gönderirken veya bir kullanıcının e-postasını doğrularken durumu devam URL'si ile iletebilirsiniz. Bu sayede kullanıcı, işlem tamamlandıktan sonra uygulamaya geri dönebilir. Buna ek olarak, e-posta işlem bağlantısının bir web sayfası yerine yüklendiğinde doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini belirtebilirsiniz.
Bu, aşağıdaki sık karşılaşılan senaryolarda son derece yararlı olabilir:
Oturumu açık olmayan 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ı, uygulamanın erişmeye çalıştığı bölüme geri dönmeyi bekler.
Uygulamalar yalnızca doğrulanmış hesaplara erişim sunabilir. Örneğin, bir bülten uygulamasında kullanıcının abone olmadan önce e-posta adresini doğrulaması gerekebilir. Kullanıcı e-posta doğrulama akışından geçer ve aboneliğini tamamlaması için uygulamaya geri döndürülmesini bekler.
Genel olarak, kullanıcı bir Apple uygulamasında şifre sıfırlama veya e-posta doğrulama akışı başlattığında, uygulama içinde akışı tamamlamayı bekler. Devam URL'si üzerinden durum iletme özelliği bunu mümkün kılar.
Devam URL'si aracılığıyla durum aktarma imkanı, Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde iyileştirebilecek güçlü bir özelliktir.
E-posta işlemlerinde durum/devam URL'si iletme
Devam eden bir URL'yi güvenli bir şekilde iletmek için URL'nin alanının Firebase konsolunda izin verilenler listesine eklenmiş olması gerekir. Bu işlem, Oturum açma yöntemi sekmesinin altındaki Yetkili alanlar listesine bu alanı ekleyerek Kimlik Doğrulama bölümünde yapılır.
Şifre sıfırlama e-postası veya doğrulama e-postası gönderilirken ActionCodeSettings
örneği sağlanmalıdır. Bu arayüz aşağıdaki parametreleri alır:
Parametre | Tür | Açıklama |
---|---|---|
url |
Dize | Farklı bağlamlarda farklı anlamlara gelen bağlantıyı (durum/devam URL'si) ayarlar:
|
iOSBundleId |
Dize | Paket kimliğini ayarlar. Bu işlem, bağlantıyı yüklü bir Apple uygulamasında açmaya çalışır. Uygulamanın Console'a kayıtlı olması gerekir. Paket kimliği sağlanmamışsa bu alanın değeri, uygulamanın ana paketinin paket kimliğine ayarlanır. |
androidPackageName |
Dize | Android paketi adını ayarlar. Bu işlem, bağlantıyı yüklü bir Android uygulamasında açmaya çalışır. |
androidInstallApp |
Bool | Cihaz destekliyorsa ve uygulama zaten yüklü değilse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. Bu alan, packageName olmadan sağlanırsa, packageName değerinin bu alanla bağlantılı olarak sağlanması gerektiğini açıklayan bir hata verilir. |
androidMinimumVersion |
Dize | Uygulamanın bu akışta desteklenen minimum sürümü. MinimumSürüm belirtilmişse ve uygulamanın daha eski bir sürümü yüklüyse kullanıcı, uygulamayı yeni sürüme geçirmek için Play Store'a yönlendirilir. Android uygulamasının Console'da kayıtlı olması gerekir. |
handleCodeInApp |
Bool | E-posta işlemi bağlantısının önce bir mobil uygulamada mı yoksa bir web bağlantısında mı açılacağı. Varsayılan değer, false (yanlış) değeridir. Doğru değerine 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ış bir durumda kod önce web widget'ına gönderilir, ardından Devam'da yüklüyse uygulamaya yönlendirilir. |
dynamicLinkDomain |
Dize | Mevcut bağlantı Firebase Dynamic Links kullanılarak açılacaksa dinamik bağlantı alan adını (veya alt alan adını) ayarlar. Proje başına birden fazla dinamik bağlantı alan adı yapılandırılabileceğinden bu alan açıkça bir alan seçme imkanı sağlar. Herhangi bir alan sağlanmazsa varsayılan olarak ilk alan kullanılır. |
Aşağıdaki örnekte, özel dinamik bağlantı alan adı example.page.link
kullanılarak önce bir mobil uygulamada Firebase Dinamik Bağlantı olarak açılacak bir e-posta doğrulama bağlantısının nasıl gönderileceği gösterilmektedir
(uygulamanın yüklü olmadığı ve minimum sürüm 12
olduğu durumlarda, uygulamanın yükleneceği iOS uygulaması com.example.ios
veya Android uygulaması com.example.android
). Derin bağlantı, devam URL yükünü
https://www.example.com/?email=user@example.com
içerir.
final user = FirebaseAuth.instance.currentUser;
final actionCodeSettings = ActionCodeSettings(
url: "http://www.example.com/verify?email=${user?.email}",
iOSBundleId: "com.example.ios",
androidPackageName: "com.example.android",
);
await user?.sendEmailVerification(actionCodeSettings);
Firebase Dynamic Links'i yapılandırma
Firebase Auth, mobil uygulamada açılması amaçlanan bir bağlantı gönderirken Firebase Dynamic Links'i kullanır. Bu özelliği kullanmak için Firebase Konsolu'nda Dynamic Links'in yapılandırılması gerekir.
Firebase Dynamic Links'i etkinleştirin:
Firebase konsolunda Dinamik Bağlantılar bölümünü açın.
Henüz Dynamic Links şartlarını kabul etmediyseniz ve bir Dynamic Links alanı oluşturmadıysanız bunu hemen yapın.
Daha önce bir Dynamic Links alan oluşturduysanız bunu not edin. Dynamic Links alanı genellikle aşağıdaki örnek gibi görünür:
example.page.link
Apple veya Android uygulamanızı gelen bağlantıyı kesecek şekilde yapılandırırken bu değere ihtiyacınız olacaktır.
Android uygulamalarını yapılandırma:
- Bu bağlantıları Android uygulamanızdan işlemeyi planlıyorsanız Firebase konsolu proje ayarlarında Android paket adını belirtmeniz gerekir. Ayrıca, uygulama sertifikasının SHA-1 ve SHA-256'sının sağlanması gerekir.
- Ayrıca, AndroidManifest.xml dosyanızda derin bağlantı için intent filtresini yapılandırmanız gerekir.
- Bu konu hakkında daha fazla bilgi için Android Dynamic Links'i alma talimatlarını inceleyin.
Apple uygulamalarını yapılandırma:
- Uygulamanızdan bu bağlantıları yönetmeyi planlıyorsanız paket kimliğinin Firebase Konsolu proje ayarlarında belirtilmesi gerekir. App Store Kimliği ve Apple Geliştirici Ekibi Kimliğinin de belirtilmesi gerekir.
- Ayrıca, uygulama özelliklerinizde FDL evrensel bağlantı alanını İlişkili alan olarak yapılandırmanız gerekir.
- Uygulamanızı iOS 8 ve daha eski sürümlere dağıtmayı planlıyorsanız paket kimliğinizi, gelen URL'ler için özel şema olarak ayarlamanız gerekir.
- Bu konu hakkında daha fazla bilgi için Apple platformları Dynamic Links'i alma talimatlarını inceleyin.
Web uygulamasındaki e-posta işlemlerini işleme
İşlem kodu bağlantısını önce bir web uygulamasından işleyip işlemeyi başarıyla tamamladıktan sonra, mobil uygulamanın kullanılabilir olması koşuluyla başka bir web sayfasına veya mobil uygulamaya yönlendirme yapmak isteyip istemediğinizi belirtebilirsiniz.
Bu işlem, ActionCodeSettings
nesnesinde handleCodeInApp
politikası false
değerine ayarlanarak yapılır. Paket kimliği veya Android paket adı gerekli olmasa da bunların sağlanması, kullanıcının e-posta işlem kodu tamamlandığında belirtilen uygulamaya geri yönlendirme yapmasına olanak tanır.
Burada kullanılan web URL'si, e-posta işlem şablonları bölümünde yapılandırılan web URL'sidir. Tüm projeler için varsayılan bir temel sağlanır. E-posta işlem işleyicisinin nasıl özelleştirileceği hakkında daha fazla bilgi edinmek için e-posta işleyicilerini özelleştirme bölümüne bakın.
Bu durumda, continueURL
sorgu parametresindeki bağlantı, yükü ActionCodeSettings
nesnesinde belirtilen URL
olan bir FDL bağlantısı olur. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı ele alıp işleyebilirsiniz ancak derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz.
E-posta doğrulaması gibi e-posta işlemleri yapılırken, değişikliğin geçerli olması (ör. e-postanın doğrulanması) için oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve applyActionCode
aracılığıyla uygulanması gerekir.
Mobil uygulamada e-posta işlemlerini yönetme
İşlem kodu bağlantısının yüklü olması koşuluyla önce mobil uygulamanızdaki
işlem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarında, cihaz destekliyorsa ve uygulama halihazırda yüklü değilse androidInstallApp
aracılığıyla uygulamanın yükleneceğini de belirtebilirsiniz.
Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa bunun yerine bir web sayfasından açılır.
Bu işlem, ActionCodeSettings
nesnesinde handleCodeInApp
politikası true
değerine ayarlanarak yapılır. Mobil uygulamanın Android paket adının veya paket kimliğinin de belirtilmesi gerekir.Burada kullanılan yedek web URL'si, mobil uygulama olmadığında e-posta işlem şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir sertifika sağlanır. E-posta işlem işleyicisinin nasıl özelleştirileceği hakkında daha fazla bilgi edinmek için e-posta işleyicilerini özelleştirme bölümüne bakın.
Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, yükü oobCode
, mode
, apiKey
ve continueUrl
sorgu parametreleriyle Console'da yapılandırılan işlem kodu URL'si olan bir FDL bağlantısı olur. İkinci değer, ActionCodeSettings
nesnesinde belirtilen orijinal URL
olur. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı ele alıp işleyebilirsiniz ancak derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz. İşlem kodu, e-posta işleyicileri özelleştirme bölümünde açıklanan web akışındaki işlenme şekline benzer şekilde doğrudan bir mobil uygulamadan uygulanabilir.
E-posta doğrulaması gibi e-posta işlemleri yapılırken, değişikliğin geçerli olması (ör. e-postanın doğrulanması) için oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve applyActionCode
aracılığıyla uygulanması gerekir.