E-posta Eylemlerinde Geçiş Durumu

Parola sıfırlama için e-posta eylemleri gönderirken veya bir kullanıcının e-postasını doğrularken, durumu bir devam URL'si aracılığıyla iletebilirsiniz. Bu, kullanıcıya işlem tamamlandıktan sonra uygulamaya geri dönme olanağı sağlar. Ayrıca, bir web sayfası yerine yüklendiğinde e-posta eylemi bağlantısının doğrudan bir mobil uygulamadan işlenip işlenmediğini belirleyebilirsiniz.

Bu, aşağıdaki yaygın senaryolarda son derece yararlı olabilir:

  • Şu anda oturum açmamış bir kullanıcı, kullanıcının oturum açmasını gerektiren içeriğe erişmeye çalışıyor olabilir. Ancak, kullanıcı parolasını unutmuş olabilir ve bu nedenle parola sıfırlama akışını tetikleyebilir. Akışın sonunda kullanıcı, uygulamanın erişmeye çalıştığı bölüme geri dönmeyi umuyor.

  • Bir uygulama yalnızca doğrulanmış hesaplara erişim sunabilir. Örneğin, bir haber bülteni, kullanıcının abone olmadan önce e-postasını doğrulamasını gerektirebilir. Kullanıcı, e-posta doğrulama akışından geçer ve aboneliğini tamamlamak için uygulamaya geri dönmeyi bekler.

  • Diğer durumlarda, kullanıcı akışı mobil cihazından başlatmış ve doğrulamadan sonra tarayıcı yerine mobil uygulamasına geri dönmesini beklemiş olabilir.

Durumu bir devam URL'si aracılığıyla iletme yeteneğine sahip olmak, Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde iyileştirebilen güçlü bir özelliktir.

E-posta işlemlerinde durum/devam URL'sini iletme

Güvenli bir URL devam geçmek için, URL'nin alanı içinde Yetkili alan adı olarak eklendi gerekecektir Firebase konsoluna . Zaten orada değilse, bu Sign-in yöntemi sekmesi altında Yetkili alanlar listesine Bu alan adını ekleyerek Kimlik Doğrulama bölümünde yapılır.

Bir firebase.auth.ActionCodeSettings örneği bir parola sıfırlama e-posta veya bir doğrulama e gönderirken temin edilmesi gerekmektedir. Bu arayüz aşağıdaki parametreleri alır:

Parametre Tip Açıklama
url sicim

Farklı bağlamlarda farklı anlamlara sahip olan bağlantıyı (dur/devam URL'si) ayarlar:

  • Bağlantısı, web eylem widget ele edildiğinde, bu derin link continueUrl sorgu parametresi.
  • Bağlantı doğrudan uygulamanın içinden ele alındığında, bu continueUrl Dynamic Link derin linkte sorgu parametresi.
iOS ({bundleId: dize}|tanımsız) iOS paket kimliğini ayarlar. Bu, yüklüyse, bağlantıyı bir iOS uygulamasında açmaya çalışacaktır. iOS uygulamasının Konsola kaydedilmesi gerekir.
android ({packageName: string, installApp:boolean|tanımsız, minimumVersion: string|tanımsız}|tanımsız) Android paket adını ayarlar. Bu, yüklüyse bağlantıyı bir Android uygulamasında açmaya çalışacaktır. Eğer installApp geçirilir, bu cihaz destekliyorsa ve uygulaması zaten yüklü değilse Android uygulamasını yüklemek belirtir. Bu alan, bir olmadan sağlanıyorsa packageName bir hata olduğunu açıklayan atılır packageName bu alanda birlikte sağlanmalıdır. Eğer minimumVersion belirtilirse ve uygulamanın eski bir sürümü yüklüyse, kullanıcının uygulamayı yükseltmek için Play Store'a alınır. Android uygulamasının Konsola kaydedilmesi gerekir.
handleCodeInApp (boolean|tanımsız) E-posta eylemi bağlantısının önce bir mobil uygulamada mı yoksa bir web bağlantısında mı açılacağı. Varsayılan yanlıştır. True olarak ayarlandığında, eylem kodu bağlantısı Evrensel Bağlantı veya Android Uygulama Bağlantısı olarak gönderilir ve kuruluysa 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.
dynamicLinkDomain (dize|tanımsız) Firebase Dynamic Links kullanılarak açılacaksa, geçerli bağlantı için kullanılacak dinamik bağlantı etki alanını (veya alt etki alanını) ayarlar. Proje başına birden çok dinamik bağlantı alanı yapılandırılabildiğinden, bu alan açıkça birini seçme olanağı sağlar. Hiçbiri sağlanmazsa, varsayılan olarak ilk etki alanı kullanılır.

Aşağıdaki örnek özel dinamik bağlantı alanı kullanarak bir Firebase Dinamik Link gibi ilk mobil uygulama olarak açılacak bir e-posta doğrulama bağlantısını nasıl gönderileceği göstermektedir example.page.link (iOS uygulaması com.example.ios veya Android uygulaması com.example.android değilse uygulama yükleme nerede zaten yüklü ve minimum versiyonudur 12 ). Derin bağlantı URL yükü devam içerecektir https://www.example.com/?email=user@example.com .

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Auth kullanan Firebase Dinamik Linkler mobil bir uygulamada açılacak içindir link gönderirken. Bu özelliği kullanmak için Firebase Konsolunda Dinamik Bağlantıların yapılandırılması gerekir.

  1. Firebase Dinamik Bağlantılarını Etkinleştirin:

    1. In Firebase konsoluna , Dinamik Linkler bölümünü açın.
    2. Henüz Dynamic Links şartlarını kabul etmediyseniz ve bir Dynamic Links etki alanı oluşturduysanız, bunu şimdi yapın.

      Zaten bir Dinamik Bağlantılar alanı oluşturduysanız, bunu not alın. Bir Dynamic Links etki alanı genellikle aşağıdaki örneğe benzer:

      example.page.link

      Apple veya Android uygulamanızı gelen bağlantıyı kesecek şekilde yapılandırırken bu değere ihtiyacınız olacak.

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

    1. Bu bağlantıları Android uygulamanızdan ele almayı planlıyorsanız, Android paketi adının Firebase Konsolu proje ayarlarında belirtilmesi gerekir. Ayrıca başvuru sertifikasının SHA-1 ve SHA-256'sının sağlanması gerekmektedir.
    2. Ayrıca derin bağlantıdan amaç filtresini yapılandırmanız gerekir AndroidManifest.xml dosyası.
    3. Bu konuda daha fazla bilgi için bkz Android Dinamik Linkler talimatları alma .
  3. iOS uygulamalarını yapılandırma:

    1. Bu bağlantıları iOS uygulamanızdan ele almayı planlıyorsanız, iOS paket kimliğinin Firebase Konsolu proje ayarlarında belirtilmesi gerekir. Ayrıca App Store ID ve Apple Developer Team ID de belirtilmelidir.
    2. Ayrıca FDL evrensel bağlantı etki alanını, uygulama yeteneklerinizde İlişkili Etki Alanı olarak yapılandırmanız gerekecektir.
    3. Uygulamanızı iOS 8 ve altı sürümlerine dağıtmayı planlıyorsanız, iOS paket kimliğinizi gelen URL'ler için özel bir şema olarak ayarlamanız gerekir.
    4. Bu konuda daha fazla bilgi için bkz iOS Dinamik Linkler talimatları alma .

Bir web uygulamasında e-posta eylemlerini işleme

Mobil uygulamanın kullanılabilir olması koşuluyla, önce bir web uygulamasından eylem kodu bağlantısını ele almak ve 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 ayar yapılır handleCodeInApp için false içinde firebase.auth.ActionCodeSettings nesne. Bir iOS paket kimliği veya Android paket adı gerekli olmasa da, bunların sağlanması, kullanıcının e-posta işlem kodu tamamlandığında belirtilen uygulamaya yeniden yönlendirme yapmasına olanak tanır.

Burada kullanılan web URL'si, e-posta eylem şablonları bölümünde yapılandırılandır. Tüm projeler için varsayılan bir tane sağlanır. Bakınız posta işleyicileri özelleştirme posta eylem işleyicisi özelleştirme ile ilgili daha fazla bilgi edinmek için.

Bu durumda, içindeki bağlantı continueUrl sorgu parametresi olan yükü olan bir FDL bağlantısını olacak URL belirtilen ActionCodeSettings nesne. Uygulamanızdan gelen bağlantıya herhangi bir ek bağımlılık olmadan müdahale edip işleyebilseniz de, derin bağlantıyı sizin için ayrıştırmak için FDL istemci kitaplığını kullanmanızı öneririz.

Böyle bir e-posta doğrulama gibi e-posta eylemleri ele aldığınızda gelen eylem kodu oobCode sorgu parametresi ihtiyaçları derin bağlantısından ayrıştırılır ve daha sonra yoluyla uygulanacak applyActionCode değişikliğin etkinleşmesi için, yani e-posta doğrulanacak.

Bir mobil uygulamada e-posta işlemlerini işleme

Eylem kodu bağlantısını, yüklü olması koşuluyla, öncelikle mobil uygulamanızda işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarının ile, aynı zamanda aracılığıyla belirtmek için yeteneği var android.installApp Uygulamanın cihazı destekler o ve zaten yüklü değilse yüklenecek olduğunu. Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa, bunun yerine bir web sayfasından açılır. Bu ayar yapılır handleCodeInApp için true de firebase.auth.ActionCodeSettings nesne. Mobil uygulamanın Android paket adı veya iOS paket kimliğinin de belirtilmesi gerekir.

Kullanılabilir mobil uygulama olmadığında burada kullanılan yedek web URL'si, e-posta eylem şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir tane sağlanır. Bakınız posta işleyicileri özelleştirme posta eylem işleyicisi özelleştirme ile ilgili daha fazla bilgi edinmek için.

Bu durumda, mobil uygulama bağlantı sorgu parametreleri ile Konsolu yapılandırılmış olan yük aksiyon kodu URL, bir FDL bağlantı olacak kullanıcıya gönderilen oobCode , mode , apiKey ve continueUrl . İkincisi özgün olacak URL belirtilen ActionCodeSettings nesne. Uygulamanızdan gelen bağlantıya herhangi bir ek bağımlılık olmadan müdahale edip işleyebilseniz de, derin bağlantıyı sizin için ayrıştırmak için FDL istemci kitaplığını kullanmanızı öneririz. Eylem kod açıklanan web akışından nasıl işlendiğini benzer bir mobil uygulamadan doğrudan uygulanabilir özelleştirme e-posta işleyicileri bölümünde.

Böyle bir e-posta doğrulama gibi e-posta eylemleri ele aldığınızda gelen eylem kodu oobCode sorgu parametresi ihtiyaçları derin bağlantısından ayrıştırılır ve daha sonra yoluyla uygulanacak applyActionCode değişikliğin etkinleşmesi için, yani e-posta doğrulanacak.