Ş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. Ek olarak, E-posta işlemi bağlantısının doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini web sayfası yerine yüklenir.
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. Baktığınızda, akışa geri döndüğünde, kullanıcı uygulamada daha önce göründüğü bölüme biraz zorlandık.
Uygulamalar yalnızca doğrulanmış hesaplara erişim sunabilir. Örneğin, Örneğin, bir bülten uygulamasında kullanıcının abone olma. 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ı web sitesinde bir şifre sıfırlama veya e-posta doğrulama akışı başlattığında Uygulama içinde akışı tamamlamasını bekledikleri bir Apple uygulaması sahip olma 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 iletilebilmesi için URL'nin alanının Firebase konsolunda beyaz listeye 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 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ı anlamları olan bağlantıyı (durum/devam URL'si) ayarlar farklı bağlamlarda görebilirsiniz:
|
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. Yanıt hayır ise: Paket kimliği sağlandı, bu alanın değeri şunun paket kimliği olarak ayarlandı: uygulamanın ana paketi. |
androidPackageName |
Dize | Android paket adını ayarlar. Bu işlem, bağlantıyı android uygulamasını kontrol edin. |
androidInstallIfNotAvailable |
Boole | Cihaz destekliyorsa ve uygulama yüklü değilse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. Bu alan bir olmadan sağlanırsa packageName ise paketAdının girmeniz gerekir. |
androidMinimumVersion |
Dize | Uygulamanın bu akışta desteklenen minimum sürümü. minimumVersion belirtilmişse 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 |
Boole | E-posta işlemi bağlantısının mobil uygulamada mı yoksa web'de mi açılacağı bağlantısını tıklayın. 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ış durumda kod, web widget'ı, ardından Devam'da yüklendi. |
dynamicLinkDomain |
Dize | Mevcut bağlantı Firebase Dynamic Links kullanılarak açılacaksa bağlantı için kullanılacak dinamik bağlantı alanını (veya alt alanını) belirler. Çoklu dinamik bağlantı alanları proje başına yapılandırılabilir. Bu alan, birini seçme olanağınız vardır. Herhangi bir alan sağlanmazsa varsayılan olarak kullanılır. |
Objective-C
Parametre | Tür | Açıklama |
---|---|---|
URL |
NSDizesi | Farklı anlamları olan bağlantıyı (durum/devam URL'si) ayarlar farklı bağlamlarda görebilirsiniz:
|
iOSBundleID |
NSDizesi | 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. |
androidPackageName |
NSString | Android paketi adını ayarlar. Bu işlem, bağlantıyı yüklüyse bir Android uygulamasında açmaya çalışır. |
androidInstallIfNotAvailable |
BOOL | cihaz destekliyorsa Android uygulamasının yüklenip yüklenmeyeceğini belirtir ve uygulama yüklü değil. Bu alan packageName olmadan sağlanırsa packageName'in bu alanla birlikte sağlanması gerektiğini açıklayan bir hata mesajı gösterilir. |
androidMinimumVersion |
NSDizesi | Uygulamanın bu akışta desteklenen minimum sürümü. Eğer minimumVersion belirtilmişse ve uygulamanın 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ı Console'a kayıtlı olması 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 |
NSDizesi | Geçerli bağlantı için kullanılacak dinamik bağlantı alan adını (veya alt alan adını) ayarlar Firebase Dynamic Links kullanılarak açılacaksa. 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. |
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.
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", installIfNotAvailable:true, minimumVersion:"12") // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = "example.page.link" 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; // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = @"example.page.link"; [actionCodeSettings setAndroidPackageName:@"com.example.android" installIfNotAvailable:YES minimumVersion:'12']; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
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. Bunu kullanmak için özelliği yoksa, Firebase Konsolu'nda Dynamic Links'in yapılandırılması gerekir.
Firebase Dynamic Links'i etkinleştirin:
- Firebase konsolunda Dynamic Links bölümünü açın.
-
Dynamic Links şartlarını henüz kabul etmediyseniz ve Dynamic Links oluşturduysanız kullanıyorsanız bunu hemen yapın.
Daha önce bir Dynamic Links alanı oluşturduysanız bunu not edin. Dynamic Links alanları genellikle aşağıdaki örnekteki 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 yönetmeyi planlıyorsanız Android paket adının Firebase Console proje ayarlarında belirtilmesi gerekir. Ek olarak, uygulamanın SHA-1 ve SHA-256 ve bu sertifikanın sağlanması gerekir.
- Ayrıca, derin bağlantı için intent filtresini şurada yapılandırmanız gerekir: AndroidManifest.xml dosyanız.
- Bu konuyla ilgili daha fazla bilgi için Android Dynamic Links ile ilgili talimatları alma.
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 evrensel bağlantı alanını Uygulama özelliklerinizde ilişkili alan.
- 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 konuyla ilgili daha fazla bilgi için Apple platformları Dynamic Links ile ilgili talimatları alma.
Web uygulamasında e-posta işlemlerini işleme
Bir web'den işlem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz
uygulamanız ve ardından başka bir web sayfasına veya mobil uygulamaya yönlendirmesi
ve başarılı bir şekilde tamamlanmasının ardından, mobil uygulamanın kullanılabilir olması durumunda.
Bu, handleCodeInApp
öğesini false
FIRActionCodeSettings
(Obj-C) veya ActionCodeSettings
(Swift) nesnesi. Bu sırada
paket kimliği
veya Android paket adı zorunlu değildir. Bu adların sağlanması, kullanıcının
e-posta işlem kodu tamamlandığında belirtilen uygulamaya geri yönlendirmek için.
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 temel sağlanı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ı
yükü ActionCodeSettings
içinde belirtilen URL
olan bir FDL bağlantısı
nesnesini tanımlayın. Uygulamanızdan gelen bağlantıya müdahale edip bunları işleyebilirsiniz
bağımlı bir dosya yoksa FDL istemci kitaplığını kullanarak
derin bağlantıyı sizin yerinize ayrıştırır.
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
Şuradaki işlem kodu bağlantısını kullanmak isteyip istemediğinizi belirtebilirsiniz:
mobil uygulamanız olması gerekir. Android uygulamalarında, androidInstallIfNotAvailable
aracılığıyla uygulamanın, cihaz tarafından destekleniyorsa ve yüklü değilse yükleneceğini de belirtebilirsiniz.
Bağlantı, mobil cihazları desteklemeyen bir cihazdan tıklanırsa
uygulamada açılırsa bunun yerine bir web sayfasından açılır.
Bu, handleCodeInApp
öğesini true
FIRActionCodeSettings
(Obj-C) veya ActionCodeSettings
(Swift) nesnesi. İlgili içeriği oluşturmak için kullanılan
mobil uygulamanın Android paket adı veya paket kimliği de
burada belirtilir.Burada kullanılan yedek web URL'si, mobil uygulama olmadığında
e-posta işlem şablonları bölümünde yapılandırılan şablondur. Varsayılan ayar
tüm projeler için kullanılabilir. Referans
e-posta işleyicilerini özelleştirme hakkında daha fazla bilgi
nasıl özelleştirileceğini anlatacağım.
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, kampanya
FIRActionCodeSettings
(Obj-C) içinde belirtilen orijinal URL
veya
ActionCodeSettings
(Swift) nesnesi var. 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
Kullanımına benzer şekilde, doğrudan bir mobil uygulamadan
bölümünde anlatılan web akışı
e-posta işleyicilerini özelleştirme bölümüne göz atın.
E-posta doğrulaması gibi e-posta işlemlerini gerçekleştirirken
oobCode
sorgu parametresinin derin bağlantıdan ayrıştırılması ve ardından uygulanması gerekir
applyActionCode
aracılığıyla gönderilen e-posta adresine bir bildirimi gönderin.