E-posta İşlemlerinde Aktarma Durumu

Ş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:

  • Bağlantı, web işlemi widget'larında işlendiğinde bu, continueUrl sorgu parametresindeki derin bağlantıdır.
  • Bağlantı doğrudan uygulamada işlendiğinde continueUrl sorgu parametresi, Dinamik Bağlantı.
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:

  • Bağlantı, web işlemi widget'larında işlendiğinde bu, continueUrl sorgu parametresindeki derin bağlantıdır.
  • Bağlantı doğrudan uygulamada işlendiğinde continueUrl sorgu parametresi, Dinamik Bağlantı.
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 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.

  1. Firebase Dynamic Links'i etkinleştirin:

    1. Firebase konsolunda Dynamic Links bölümünü açın.
    2. 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.

  2. Android uygulamalarını yapılandırma:

    1. 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.
    2. Ayrıca, derin bağlantı için intent filtresini şurada yapılandırmanız gerekir: AndroidManifest.xml dosyanız.
    3. Bu konuyla ilgili daha fazla bilgi için Android Dynamic Links ile ilgili talimatları alma.
  3. Apple uygulamalarını yapılandırma:

    1. 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.
    2. Ayrıca FDL evrensel bağlantı alanını Uygulama özelliklerinizde ilişkili alan.
    3. 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.
    4. 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.