E-posta Eylemlerinde Geçiş Durumu

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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

Devam URL'sini güvenli bir şekilde iletmek için, URL'nin alan adının Firebase konsolunda Yetkili alan olarak eklenmesi gerekir. Bu, Kimlik Doğrulama bölümünde, bu etki alanı henüz orada değilse, Oturum açma yöntemi sekmesi altındaki Yetkili etki alanları listesine eklenerek yapılır.

Parola sıfırlama e-postası veya doğrulama e-postası gönderilirken bir firebase.auth.ActionCodeSettings örneğinin sağlanması gerekir. 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ı, web eylemi pencere öğelerinde işlendiğinde, bu, continueUrl sorgu parametresindeki derin bağlantıdır.
  • Bağlantı doğrudan uygulamada işlendiğinde, bu, Dinamik Bağlantının derin bağlantısındaki continueUrl sorgu parametresidir.
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. installApp iletilirse, cihaz destekliyorsa ve uygulama zaten yüklü değilse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. Bu alan packageName olmadan sağlanırsa, packageName bu alanla birlikte sağlanması gerektiğini açıklayan bir hata verilir. minimumVersion belirtilirse ve uygulamanın daha eski bir sürümü yüklenirse, kullanıcı uygulamayı yükseltmek için Play Store'a götürülü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ı etki alanı example.page.link (iOS uygulaması com.example.ios veya Android uygulaması com.example.android , önceden yüklenmemişse uygulamanın yükleneceği yer ve minimum sürüm 12 ). Derin bağlantı, devam URL yükünü https://www.example.com/?email=user@example.com içerecektir.

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, bir mobil uygulamada açılması amaçlanan bir bağlantı gönderirken Firebase Dynamic Links'i kullanır. 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. Firebase konsolunda , Dinamik Bağlantılar 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 AndroidManifest.xml dosyanızdaki derin bağlantı için amaç filtresini yapılandırmanız gerekecektir.
    3. Bununla ilgili daha fazla bilgi için Android Dinamik Bağlantılarını Alma talimatlarına bakın.
  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. Bununla ilgili daha fazla bilgi için iOS Dinamik Bağlantılarını Alma talimatlarına bakın.

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, firebase.auth.ActionCodeSettings nesnesinde handleCodeInApp öğesini false olarak ayarlayarak yapılır. 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. E-posta eylemi işleyicisinin nasıl özelleştirileceği hakkında daha fazla bilgi edinmek için e-posta işleyicilerini özelleştirmeye bakın.

Bu durumda, continueUrl sorgu parametresindeki bağlantı, yükü ActionCodeSettings nesnesinde belirtilen URL olan bir FDL bağlantısı olacaktır. 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.

E-posta doğrulaması gibi e-posta eylemlerini işlerken, değişikliğin geçerli olması, yani e-postanın doğrulanması için oobCode sorgu parametresindeki eylem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode aracılığıyla uygulanması gerekir.

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ı ile, cihaz destekliyorsa ve halihazırda yüklü değilse, uygulamanın kurulacağını android.installApp üzerinden belirtme olanağına da sahipsiniz. Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa, bunun yerine bir web sayfasından açılır. Bu, firebase.auth.ActionCodeSettings nesnesinde handleCodeInApp öğesini true olarak ayarlayarak yapılır. 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. E-posta eylemi işleyicisinin nasıl özelleştirileceği hakkında daha fazla bilgi edinmek için e-posta işleyicilerini özelleştirmeye bakın.

Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, oobCode , mode , apiKey ve continueUrl sorgu parametreleriyle Konsolda yapılandırılan, yükü eylem kodu URL'si olan bir FDL bağlantısı olacaktır. İkincisi, ActionCodeSettings nesnesinde belirtilen orijinal URL olacaktır. 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 kodu, e-posta işleyicilerini özelleştirme bölümünde açıklanan web akışından nasıl işlendiğine benzer şekilde doğrudan bir mobil uygulamadan uygulanabilir.

E-posta doğrulaması gibi e-posta eylemlerini işlerken, değişikliğin geçerli olması, yani e-postanın doğrulanması için oobCode sorgu parametresindeki eylem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode aracılığıyla uygulanması gerekir.