E-posta İşlemlerinde Aktarma Durumu

Şifre için e-posta işlemleri gönderirken devam URL'si aracılığıyla durumu iletebilirsiniz. Kullanıcının e-posta adresini sıfırlar veya doğrular. Bu, kullanıcıya İşlem tamamlandıktan sonra uygulamaya geri döner. Ek olarak, aşağıdaki durumlarda e-posta işlem bağlantısının doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini web sayfası yerine yüklenir.

Bu, aşağıdaki sık karşılaşılan senaryolarda son derece yararlı olabilir:

  • Henüz giriş yapmamış bir kullanıcı, kullanıcının oturum açmış olması gerekir. Ancak kullanıcı bu içeriği unutmuş olabilir ve dolayısıyla şifre sıfırlama akışını tetikler. Baktığınızda, akışa döndüğünde, kullanıcı uygulamada daha önce göründüğü bölüme geri dönmeyi 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ışından geçer ve veya uygulamaya geri dönülmesini sağlar.

  • 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 durum iletme imkanı, Firebase Auth, kullanıcı deneyimini önemli ölçüde geliştirebilen bir destek sunar.

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 beyaz listeye eklenmiş olmalıdır. Bu işlem, Kimlik Doğrulama bölümünde bu alanı Oturum açma yöntemi sekmesindeki Yetkili alanlar listesinde bu seçeneği göremiyorsanız.

Gönderim sırasında bir FIRActionCodeSettings örneği sağlanmalıdır şifre sıfırlama e-postası veya doğrulama e-postası. Bu arayüz, şu parametrelere sahiptir:

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 bağlantısını continueUrl sorgu parametresinde kullanmalısınız.
  • Bağlantı doğrudan uygulamada işlendiğinde continueUrl sorgu parametresi, Dinamik Bağlantı.
iOSBundleID Dize Paket kimliğini ayarlar. Bu işlem, aşağıdaki durumlarda bağlantıyı bir Apple uygulamasında açmaya çalışır: yüklü olmalıdır. Uygulamanın Console'a kayıtlı olması gerekir. Yanıt hayır ise: Paket kimliği sağlandı, bu alanın değeri şu paket kimliğine ayarlanır: uygulamanın ana paketi.
androidPackageName Dize Android paketi adını ayarlar. Bu işlem, bağlantıyı android uygulamasını kontrol edin.
androidInstallIfNotAvailable Boole Cihaz destekliyorsa Android uygulamasının yüklenip yüklenmeyeceğini belirtir ve uygulama yüklü değil. 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ü. 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 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önderilecek ve uygulama tarafından geri yüklenir. Yanlış durumda kod, web widget'ı, ardından Devam'da yüklendi.
dynamicLinkDomain Dize 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. Ç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 bağlantısını continueUrl sorgu parametresinde kullanmalısınız.
  • Bağlantı doğrudan uygulamada işlendiğinde continueUrl sorgu parametresi, Dinamik Bağlantı.
iOSBundleID NSDizesi Paket kimliğini ayarlar. Bu işlem, aşağıdaki durumlarda bağlantıyı bir Apple uygulamasında açmaya çalışır: yüklü olmalıdır. Uygulamanın Console'a kayıtlı olması gerekir.
androidPackageName NSDizesi Android paketi adını ayarlar. Bu işlem, bağlantıyı android uygulamasını kontrol edin.
androidInstallIfNotAvailable BOOL cihaz destekliyorsa Android uygulamasının yüklenip yüklenmeyeceğini belirtir ve uygulama yüklü değil. Bu alan bir olmadan sağlanırsa packageName ise paketAdının girmeniz gerekir.
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ş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önderilecek ve uygulama tarafından geri yüklenir. Yanlış durumda kod, web widget'ı, ardından Devam'da yüklendi.
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. Ç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.

Aşağıdaki örnekte, bir e-posta doğrulama bağlantısının Firebase Dynamic Link olarak, öncelikle bir mobil uygulamada dinamik bağlantı alan adı example.page.link (iOS uygulaması com.example.ios veya Android uygulaması com.example.android; burada, uygulamanın (yüklü değilse ve minimum sürüm 12 ise) yüklenir). İlgili içeriği oluşturmak için kullanılan derin bağlantı, devam URL 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",
                                         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, bir mobil uygulamada açılması amaçlanan bağlantıdı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 Dynamic Links alanı oluşturduysanız bunu not edin. Dynamic Links alan genellikle aşağıdaki örnekteki gibi görünür:

      example.page.link

      Apple veya Android uygulamanızı aşağıdaki amaçlarla yapılandırırken bu değere ihtiyacınız olacaktır: izlemesi için bir istek oluşturur.

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

    1. Bu bağlantıları Android uygulamanızdan işlemeyi planlıyorsanız Android paket adının Firebase Konsolu'nda belirtilmesi gerekir iyi bir fırsattır. Ek olarak, uygulamanın SHA-1 ve SHA-256 sağlayabilirsiniz.
    2. Ayrıca, derin bağlantı için intent filtresini şurada yapılandırmanız gerekir: AndroidManifest.xml dosyanızı yükleyin.
    3. Bu konuyla ilgili daha fazla bilgi için Android Dynamic Links ile ilgili talimatları alma.
  3. Apple uygulamalarını yapılandırma:

    1. Uygulamanızdan bu bağlantıları işlemeyi planlıyorsanız paket kimliğinin Firebase Konsolu'nda belirtilmesi gerekiyor iyi bir fırsattır. Buna ek olarak, App Store Kimliği ve Apple Developer Ekip 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 daha eski sürümlere dağıtmayı planlıyorsanız paket kimliğinizi gelen e-posta adresi için özel bir şema olarak ayarlamanız gerekir URL'ler.
    4. Bu konuyla ilgili daha fazla bilgi için Apple platformları Dynamic Links ile ilgili talimatları alma.

Web uygulamasındaki 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 mobil uygulamanın kullanılabilir olması koşuluyla, başarılı bir şekilde tamamlandıktan sonra. 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ında yapılandırılan web URL'sidir. bölümüne bakın. Tüm projeler için varsayılan bir temel sağlanır. Referans e-posta işleyicilerini özelleştirme hakkında daha fazla bilgi nasıl özelleştirileceğini anlatacağım.

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 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.

Mobil uygulamada e-posta işlemlerini yönetme

Ş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 belirtebilirsiniz. cihaz destekliyorsa ve henüz desteklenmiyorsa uygulamanın yüklenmesi gerekir. yüklendi. 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ı bir FDL bağlantısı olacaktır. yük, sorguyla birlikte Console'da yapılandırılan işlem kodu URL'sidir. oobCode, mode, apiKey ve continueUrl parametreleri. İkincisi, kampanya FIRActionCodeSettings (Obj-C) içinde belirtilen orijinal URL veya ActionCodeSettings (Swift) nesnesi var. Müdahale etme kabiliyetini hiçbir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı kullandığınızdan emin olun. kullanarak derin bağlantıyı sizin için ayrıştırın. İş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.