E-posta Eylemlerinde Geçiş Durumu

Parola sıfırlamaları 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 yeteneği sağlar. Ayrıca, bir web sayfası yerine yüklendiğinde e-posta eylem bağlantısının doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini belirtebilirsiniz.

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ş ve bu nedenle parola sıfırlama akışını tetiklemiş olabilir. Akışın sonunda kullanıcı, uygulamanın erişmeye çalıştığı bölümüne geri dönmeyi bekler.

  • Bir uygulama yalnızca doğrulanmış hesaplara erişim sunabilir. Örneğin, bir haber bülteni, kullanıcının abone olmadan önce e-posta adresini 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ış olabilir ve doğrulamadan sonra tarayıcı yerine mobil uygulamasına geri dönmeyi bekleyebilir.

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

E-posta işlemlerinde durum/devam URL'sini geçirme

Bir devam URL'sini güvenli bir şekilde iletmek için, URL'ye ilişkin alanın Firebase konsolunda Yetkili alan olarak eklenmesi gerekir. Bu, Kimlik Doğrulama bölümünde, zaten orada değilse, bu etki alanını Oturum açma yöntemi sekmesi altındaki Yetkili etki alanları listesine ekleyerek yapılır.

Parola sıfırlama e-postası veya doğrulama e-postası gönderilirken bir firebase.auth.ActionCodeSettings örneği sağlanmalıdır. Bu arabirim aşağıdaki parametreleri alır:

Parametre Tip Açıklama
url sicim

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

  • Bağlantı, web eylemi widget'larında 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: string}|tanımsız) iOS paket kimliğini ayarlar. Bu, yüklüyse bağlantıyı bir iOS uygulamasında açmaya çalışır. iOS uygulamasının Konsolda kayıtlı olması gerekir.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Android paket adını ayarlar. Bu, yüklüyse bağlantıyı bir Android uygulamasında açmaya çalışı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ü kuruluysa kullanıcı, uygulamayı yükseltmek için Play Store'a yönlendirilir. Android uygulamasının Konsolda kayıtlı olması gerekir.
handleCodeInApp (boole|tanımsız) E-posta eylem 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. Doğru olarak ayarlandığında, işlem kodu bağlantısı Evrensel Bağlantı 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önderilecek ve ardından devam edildiğinde, yüklüyse uygulamaya yönlendirilecektir.
dynamicLinkDomain (dize|tanımsız) Firebase Dynamic Links kullanılarak açılacaksa, geçerli bağlantı için kullanılacak dinamik bağlantı alanını (veya alt etki alanını) ayarlar. Proje başına birden fazla dinamik bağlantı alanı yapılandırılabileceğ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 adı example.page.link (iOS uygulaması com.example.ios veya Android uygulaması com.example.android Zaten yüklü değilse ve minimum sürüm 12 ise uygulamanın yükleneceği com.example.android ). Derin bağlantı, devam eden 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 Dynamic Links'i etkinleştirin:

    1. Firebase konsolunda Dinamik Bağlantılar bölümünü açın.
    2. Dinamik Bağlantılar şartlarını henüz kabul etmediyseniz ve bir Dinamik Bağlantılar alanı oluşturmadıysanız, bunu şimdi yapın.

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

      example.page.link

      Gelen bağlantıyı kesmek için Apple veya Android uygulamanızı yapılandırdığınızda bu değere ihtiyacınız olacak.

  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 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. AndroidManifest.xml dosyanızdaki derin bağlantı için niyet filtresini de 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 işlemeyi planlıyorsanız iOS paket kimliğinin Firebase Konsolu proje ayarlarında belirtilmesi gerekir. Ayrıca App Store ID ve Apple Developer Team ID'nin de belirtilmesi gerekiyor.
    2. Ayrıca, uygulama yeteneklerinizde FDL evrensel bağlantı etki alanını bir İlişkili Etki Alanı olarak yapılandırmanız gerekecektir.
    3. Uygulamanızı iOS sürüm 8 ve altına 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 yönetme

Eylem kodu bağlantısını önce bir web uygulamasından işlemek ve ardından başarılı bir şekilde tamamlandıktan sonra başka bir web sayfasına veya mobil uygulamanın kullanılabilir olması koşuluyla mobil uygulamaya yönlendirme 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 eylem kodu tamamlandığında belirtilen uygulamaya geri yönlendirmesine 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 eylem işleyicisini nasıl özelleştireceğiniz hakkında daha fazla bilgi edinmek için e- posta işleyicilerini özelleştirme konusuna bakın.

Bu durumda, continueUrl sorgu parametresi içindeki bağlantı, yükü ActionCodeSettings nesnesinde belirtilen URL olan bir FDL bağlantısı olacaktır. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı yakalayıp işleyebilirken, derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz.

E-posta doğrulaması gibi e-posta eylemlerini işlerken, değişikliğin geçerli olması için, yani e-postanın doğrulanması için oobCode sorgu parametresinden gelen 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 yönetme

Yüklü olması koşuluyla, önce mobil uygulamanızın içindeki eylem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarında ayrıca android.installApp aracılığıyla, cihaz destekliyorsa ve zaten kurulu değilse uygulamanın kurulacağını belirtebilirsiniz. Bağlantıya mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa, bunun yerine bir web sayfasından açılır. Bu, firebase.auth.ActionCodeSettings nesnesinde handleCodeInApp öğesinin true olarak ayarlanmasıyla yapılır. Mobil uygulamanın Android paket adının veya iOS paket kimliğinin de belirtilmesi gerekecektir.

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 eylem işleyicisini nasıl özelleştireceğiniz hakkında daha fazla bilgi edinmek için e- posta işleyicilerini özelleştirme konusuna bakın.

Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, yükü oobCode , mode , apiKey ve continueUrl sorgu parametreleriyle Konsolda yapılandırılan eylem kodu URL'si olan bir FDL bağlantısı olacaktır. İkincisi, ActionCodeSettings nesnesinde belirtilen orijinal URL olacaktır. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı yakalayıp işleyebilirken, derin bağlantıyı sizin için ayrıştırmak üzere 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ı için, yani e-postanın doğrulanması için oobCode sorgu parametresinden gelen eylem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode aracılığıyla uygulanması gerekir.