Şifre sıfırlama veya kullanıcı e-posta adresini doğrulama için e-posta işlemleri gönderirken devam URL'si üzerinden durum 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ülten uygulaması, kullanıcının abone olmadan önce e-postasını doğrulaması gerekebilir. Kullanıcı, e-posta doğrulama akışından geçer 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. Durumu devam URL'si üzerinden iletme özelliği bunu mümkün kılar.
Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde iyileştirebilen güçlü bir özellik olan devam URL'si aracılığıyla durumu iletme olanağına sahip olursunuz.
E-posta işlemlerinde devam URL'sinin durumunu iletme
Devam URL'sini güvenli bir şekilde iletmek için URL'nin alanını yetkili alan olarak eklemeniz gerekir:
Firebase konsolunda Güvenlik > Kimlik doğrulama > Ayarlar sekmesine gidin.
Yetkili alanlar bölümünde Alan ekle'yi tıklayın ve URL'yi ekleyin.
Şifre sıfırlama e-postası veya doğrulama e-postası gönderilirken bir FIRActionCodeSettings örneği sağlanmalıdır. Bu arayüz aşağıdaki parametreleri alır:
Swift
| Parametre | Tür | Açıklama |
|---|---|---|
URL |
Dize | Farklı bağlamlarda farklı anlamlara gelen bağlantıyı (durum/devam URL'si) ayarlar:
|
iOSBundleID |
Dize | iOS paket kimliğini ayarlayarak Firebase Authentication'nı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ı olur. |
androidPackageName |
Dize | 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. |
handleCodeInApp |
Boole | 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 ardından devam edildiğinde yüklüyse uygulamaya yönlendirilir. |
linkDomain |
Dize | Bir proje için özel barındırma bağlantısı 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 |
dynamicLinkDomain |
Dize | Kullanımdan kaldırıldı. Bu parametreyi belirtmeyin. |
Objective-C
| Parametre | Tür | Açıklama |
|---|---|---|
URL |
NSString | Farklı bağlamlarda farklı anlamlara gelen bağlantıyı (durum/devam URL'si) ayarlar:
|
iOSBundleID |
NSString | iOS paket kimliğini, Firebase Authentication'nın yalnızca web'e özel bir bağlantı mı yoksa Android veya Apple cihazda açılan bir mobil bağlantı mı oluşturması gerektiğini belirlemesine yardımcı olmak için ayarlar. |
androidPackageName |
NSString | Firebase Authentication'nın, Android veya Apple cihazda açılan yalnızca web'e yönelik ya da mobil bağlantı oluşturup oluşturmaması gerektiğini belirlemesine yardımcı olmak için Android paket adını ayarlar. |
handleCodeInApp |
BOOL | 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 ardından devam edildiğinde yüklüyse uygulamaya yönlendirilir. |
linkDomain |
NSString | 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 |
dynamicLinkDomain |
NSString | Kullanımdan kaldırıldı. Bu parametreyi belirtmeyin. |
Aşağıdaki örnekte, özel Hosting bağlantı alanını kullanarak önce bir mobil uygulamada açılacak e-posta doğrulama bağlantısının nasıl gönderileceği gösterilmektedir
custom-domain.com. Derin bağlantı, devam URL'si yükünü içerir
https://www.example.com/?email=user@example.com.
Swift
var actionCodeSettings = ActionCodeSettings.init() actionCodeSettings.canHandleInApp = true let user = Auth.auth().currentUser() actionCodeSettings.URL = String(format: "https://www.example.com/?email=%@", user.email) actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier! actionCodeSettings.setAndroidPakageName("com.example.android") // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = "custom-domain.com" user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in if error { // Error occurred. Inspect error.code and handle error. return } // Email verification sent. })
Objective-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; actionCodeSettings.handleCodeInApp = YES; FIRUser *user = [FIRAuth auth].currentUser; NSString *urlString = [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email]; actionCodeSettings.URL = [NSURL URLWithString:urlString]; actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier; // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = @"custom-domain.com"; [actionCodeSettings setAndroidPackageName:@"com.example.android"]; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification 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 Hosting bağlantılarının Firebase konsolunda yapılandırılması gerekir.
Apple uygulamalarını yapılandırma:
- Bu bağlantıları 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ısı talimatlarını alma başlıklı makaleyi inceleyin.
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.xmldosyanızda derin bağlantı için intent filtresini 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.
Web uygulamasında e-posta işlemlerini işleme
Mobil uygulama varsa önce bir web uygulamasından işlem kodu bağlantısını işlemek, 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, handleCodeInApp nesnesinde FIRActionCodeSettings (Obj-C) veya ActionCodeSettings (Swift) olarak ayarlanarak yapılır.false Paket kimliği veya Android paket adı zorunlu olmasa da bunların sağlanması, kullanıcının e-posta işlem kodu tamamlandığında belirtilen uygulamaya 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 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, 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 değişikliğin geçerli olması için applyActionCode üzerinden uygulanması gerekir (ör. e-postanın doğrulanması).
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, FIRActionCodeSettings (Obj-C) veya ActionCodeSettings (Swift) nesnesinde handleCodeInApp değeri true olarak ayarlanarak yapılır. Mobil uygulamanın Android paket adı veya paket kimliği de belirtilmelidir. Burada, 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, FIRActionCodeSettings (Obj-C) veya ActionCodeSettings (Swift) nesnesinde belirtilen orijinal URL olacaktır. İşlem kodu, e-posta işleyicilerini özelleştirme bölümünde açıklanan web akışında olduğu gibi 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 değişikliğin geçerli olması için applyActionCode üzerinden uygulanması gerekir (ör. e-postanın doğrulanması).