Şifre sıfırlama işlemleri veya kullanıcının e-posta adresini doğrulama için e-posta işlemleri gönderirken devam URL'si aracılığıyla durumu iletebilirsiniz. Bu sayede kullanıcı, işlem tamamlandıktan sonra uygulamaya geri dönebilir. Ayrıca, e-posta işlem bağlantısının bir web sayfası yerine mobil uygulamadan yüklendiğinde doğrudan mobil uygulamadan mı yoksa web sayfasından mı işleneceğini belirtebilirsiniz.
Bu, aşağıdaki yaygın senaryolarda son derece yararlı olabilir:
Şu anda giriş yapmamış 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ı tetiklemiş olabilir. Kullanıcı, akış sonunda 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ı, abone olmadan önce kullanıcının e-posta adresini doğrulamasını gerektirebilir. Kullanıcı, e-posta doğrulama akışında ilerler ve aboneliğini tamamlamak için uygulamaya geri dönmeyi bekler.
Genel olarak, bir kullanıcı Apple uygulamasında şifre sıfırlama veya e-posta doğrulama akışını başlattığında akışı uygulama içinde tamamlamayı bekler. Devam URL'si aracılığıyla durumu iletme özelliği bunu mümkün kılar.
Devam URL'si aracılığıyla durumu iletme özelliği, Firebase Auth'un sunduğu ve kullanıcı deneyimini önemli ölçüde iyileştirebilecek güçlü bir özelliktir.
E-posta işlemlerinde durum/devam URL'si iletme
Devam URL'sinin güvenli bir şekilde iletilmesi için URL'nin alanının Firebase konsolunda izin verilenler listesine eklenmesi gerekir. Bu işlem, Kimlik doğrulama bölümünde yapılır. Alanınız, Giriş yöntemi sekmesinin altındaki Yetkili alanlar listesine eklenir (henüz eklenmemişse).
Şifre sıfırlama e-postası veya doğrulama e-postası gönderirken bir 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 sahip olan bağlantıyı (durum/devam URL'si) belirler:
|
|||
iOSBundleId |
Dize | Paket kimliğini ayarlar. Bu işlem, yüklüyse bağlantıyı bir Apple uygulamasında açmaya çalışır. Uygulamanın Console'a kaydedilmiş olması gerekir. Paket kimliği sağlanmazsa bu alanın değeri, uygulamanın ana paketinin paket kimliğine ayarlanır. | |||
androidPackageName |
Dize | Android paket adını ayarlar. Bu işlem, bağlantıyı yüklüyse bir Android uygulamasında açmaya çalışır. | |||
androidInstallApp |
bool | Cihaz destekliyorsa ve uygulama yüklü değilse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. Bu alan packageName olmadan sağlanırsa packageName'in bu alanla birlikte sağlanması gerektiğini açıklayan bir hata mesajı gösterilir. | |||
androidMinimumVersion |
Dize | Uygulamanın bu akışta desteklenen minimum sürümü. minimumVersion belirtilirse ve uygulamanın eski bir sürümü yüklüyse kullanıcı, uygulamayı yükseltmek için Play Store'a yönlendirilir. Android uygulamasının Console'a kaydedilmesi gerekir. | |||
handleCodeInApp |
bool | E-posta işlem bağlantısının önce mobil uygulamada mı yoksa web bağlantısında mı açılacağını belirtir. Varsayılan değer yanlıştır. 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ış durumda kod önce web widget'ına gönderilir ve devam edildiğinde yüklüyse uygulamaya yönlendirilir. | |||
dynamicLinkDomain |
Dize | (Desteği sonlandırıldı, "linkDomain"i kullanın) Firebase Dynamic Links kullanılarak açılacaksa mevcut bağlantı için kullanılacak dinamik bağlantı alanını (veya alt alanını) belirler. Proje başına birden fazla dinamik bağlantı alanı yapılandırılabilir. Bu alan, birini açıkça seçmenize olanak tanır. Hiçbiri sağlanmazsa varsayılan olarak ilk alan adı kullanılır. | linkDomain |
Dize | Bağlantının belirli bir mobil uygulama üzerinden açılacağı durumlarda kullanılacak isteğe bağlı özel Firebase Hosting alanı. Alan, Firebase Hosting'de yapılandırılmış ve projenin mülkiyetinde olmalıdır. Bu, varsayılan bir barındırma alanı ("web.app" veya "firebaseapp.com") olamaz. Bu ayar, desteği sonlandırılan "dynamicLinkDomain" ayarının yerini alır. |
Aşağıdaki örnekte, özel dinamik bağlantı alanı example.page.link
(henüz yüklenmemişse uygulamanın yükleneceği iOS uygulaması com.example.ios
veya Android uygulaması com.example.android
ve minimum sürüm 12
) kullanılarak mobil uygulamada önce Firebase Dynamic Link olarak 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ü 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 Dinamik Bağlantılar'ın Firebase Konsolu'nda yapılandırılması gerekir.
Firebase Dynamic Links'i etkinleştirin:
Firebase konsolunda Dinamik Bağlantılar bölümünü açın.
Dinamik Bağlantılar şartlarını henüz kabul etmediyseniz ve Dinamik Bağlantılar alanı oluşturmadıysanız bunu hemen yapın.
Daha önce dinamik bağlantılar alanı oluşturduysanız bu alanı not edin. Dinamik Bağlantılar alanı genellikle aşağıdaki örnek gibi görünür:
example.page.link
Apple veya Android uygulamanızı gelen bağlantıyı engelleyecek ş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 yönetmeyi planlıyorsanız Android paket adının Firebase Console proje ayarlarında belirtilmesi gerekir. Ayrıca, uygulama sertifikasının SHA-1 ve SHA-256 değerlerinin de sağlanması gerekir.
- AndroidManifest.xml dosyanızda derin bağlantının intent filtresini de yapılandırmanız gerekir.
- Bu konuda daha fazla bilgi için Android dinamik bağlantıları alma talimatlarını inceleyin.
Apple uygulamalarını yapılandırma:
- Bu bağlantıları uygulamanızdan yönetmeyi planlıyorsanız paket kimliğinin Firebase Console proje ayarlarında belirtilmesi gerekir. Ayrıca App Store kimliğinin ve Apple geliştirici ekibi kimliğinin de belirtilmesi gerekir.
- Ayrıca, FDL geçiş bağlantısı alanını uygulama özelliklerinde İlişkili Alan olarak yapılandırmanız gerekir.
- Uygulamanızı iOS 8 ve önceki sürümlere dağıtmayı planlıyorsanız gelen URL'ler için paket kimliğinizi özel şema olarak ayarlamanız gerekir.
- Bu konuda daha fazla bilgi için Apple platformları için dinamik bağlantı alma talimatlarını inceleyin.
Web uygulamasında e-posta işlemlerini işleme
İşlem kodu bağlantısını önce bir web uygulamasından işlemek isteyip istemediğinizi ve ardından başarılı bir şekilde tamamlandıktan sonra (mobil uygulama mevcutsa) başka bir web sayfasına veya mobil uygulamaya yönlendirmek isteyip istemediğinizi belirtebilirsiniz.
Bu işlem, ActionCodeSettings
nesnesinde handleCodeInApp
değerinin false
olarak ayarlanmasıyla yapılır. Paket kimliği veya Android paket adı zorunlu olmasa da bunların sağlanması, e-posta işlemi kodu tamamlandığında kullanıcının belirtilen uygulamaya geri yönlendirilmesine olanak tanır.
Burada kullanılan web URL'si, e-posta işlem şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir yapılandırma ayrılır. E-posta işlem 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ı, ActionCodeSettings
nesnesinde belirtilen URL
olan bir FDL bağlantısı olur. Uygulamanızdan gelen bağlantıyı herhangi bir ek bağımlılık olmadan yakalayı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şlemlerini işlerken, oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından değişikliğin geçerli olması (yani e-postanın doğrulanması) için applyActionCode
aracılığıyla uygulanması gerekir.
Mobil uygulamada e-posta işlemlerini işleme
Yüklü olması koşuluyla, işlem kodu bağlantısını önce mobil uygulamanızda işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarında, androidInstallApp
aracılığıyla uygulamanın, cihaz tarafından destekleniyorsa ve yüklü değilse 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
değerinin true
olarak ayarlanmasıyla yapılır. Mobil uygulamanın Android paket adının veya paket kimliğinin de belirtilmesi gerekir.Mobil uygulama olmadığında burada kullanılan yedek web URL'si, e-posta işlem şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir anahtar ayrılır. E-posta işlem 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ı, yükü oobCode
, mode
, apiKey
ve continueUrl
sorgu parametreleriyle Console'da yapılandırılmış işlem kodu URL'si olan bir FDL bağlantısı olur. İkincisi, ActionCodeSettings
nesnesinde belirtilen orijinal URL
olur. Uygulamanızdan gelen bağlantıyı herhangi bir ek bağımlılık olmadan yakalayı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şleyicilerini özelleştirme bölümünde açıklanan web akışında işlenmesine benzer şekilde doğrudan bir mobil uygulamadan uygulanabilir.
E-posta doğrulaması gibi e-posta işlemlerini işlerken, oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından değişikliğin geçerli olması (yani e-postanın doğrulanması) için applyActionCode
aracılığıyla uygulanması gerekir.