Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

E-posta İşlemlerinde Geçiş Durumu

Şifre 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. Ek olarak, e-posta eylem bağlantısını web sayfası yerine yüklendiğinde doğrudan bir mobil uygulamadan işleyip işlemeyeceğ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ş 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-postasını doğrulamasını isteyebilir. 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ı mobil cihazından akışı başlatmış olabilir ve doğrulamanın ardından tarayıcı yerine mobil uygulamasına geri dönmeyi bekleyebilir.

Devam eden bir URL aracılığıyla durumu geçirme yeteneğine sahip olmak, Firebase Auth'nin sağladığı güçlü bir özelliktir ve kullanıcı deneyimini önemli ölçüde geliştirebilir.

E-posta işlemlerinde durum / devam URL'si geçiriliyor

Devam eden bir URL'yi güvenli bir şekilde geçirmek için, URL'nin etki alanının Firebase konsolunda beyaz listeye alınması gerekir. Bu, Kimlik Doğrulama bölümünde, bu etki alanını Oturum açma yöntemi sekmesi altındaki Yetkili etki alanları listesine ekleyerek yapılır.

Bir parola sıfırlama e-postası veya doğrulama e-postası gönderirken bir firebase.auth.ActionCodeSettings örneğinin sağlanması gerekir. Bu arayüz aşağıdaki parametreleri alır:

Parametre Tür Açıklama
url dizi

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: dize} | tanımsız) İOS paket kimliğini ayarlar. Bu, yüklüyse bir iOS uygulamasında bağlantıyı açmaya çalışacaktır. İOS uygulamasının Konsola kaydedilmesi gerekir.
android ({paketAdı: 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ışacaktır. İnstallApp geçilirse, cihaz destekliyorsa ve uygulama zaten yüklü değilse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. Bu alan bir packageName olmadan sağlanırsa, packageName'in bu alanla birlikte sağlanması gerektiğini açıklayan bir hata atılır. MinimumVersion belirtilirse ve uygulamanın daha eski bir sürümü yüklenirse, kullanıcı uygulamayı yükseltmek için Play Store'a yönlendirilir. Android uygulamasının Konsola kaydedilmesi 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önderilecek ve yüklüyse uygulama tarafından açılacaktır. Yanlış durumda, kod önce web widget'ına gönderilecek ve ardından Continue, yüklüyse uygulamaya yeniden yönlendirilecektir.
dynamicLinkDomain (dize | tanımsız) Firebase Dynamic Links kullanılarak açılacaksa, mevcut bağlantı için kullanılacak dinamik bağlantı alanını (veya alt alan adını) ayarlar. Proje başına birden fazla dinamik bağlantı alanı yapılandırılabildiğinden, bu alan açıkça birini seçme yeteneği sağlar. Hiçbiri sağlanmazsa, ilk alan varsayılan olarak kullanılır.

Aşağıdaki örnek, bir mobil uygulamada ilk olarak özel dinamik bağlantı alanı example.page.link (iOS uygulaması com.example.ios veya Android app com.example.android , henüz yüklenmemişse uygulamanın yükleneceği yer ve minimum sürüm 12 ). 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. Henüz Dinamik Bağlantılar şartlarını kabul etmediyseniz ve bir Dinamik Bağlantılar alanı oluşturduysanız, şimdi yapın.

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

      example.page.link

      İOS veya Android uygulamanızı gelen bağlantıya müdahale edecek şekilde 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 işlemeyi planlıyorsanız, Android paket adının Firebase Konsolu proje ayarlarında belirtilmesi gerekir. Ek olarak, uygulama sertifikasının SHA-1 ve SHA-256'sının sağlanması gerekir.
    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ı Alma talimatlarına bakın .
  3. İOS 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. Ek olarak, App Store Kimliği ve Apple Geliştirici Ekip Kimliğinin de belirtilmesi gerekir.
    2. Ayrıca, FDL evrensel bağlantı etki alanını, uygulama yeteneklerinizde bir İlişkili Etki Alanı olarak yapılandırmanız gerekecektir.
    3. Uygulamanızı iOS 8 ve daha eski sürümlere 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ı Alma talimatlarına bakın .

Bir web uygulamasında e-posta eylemlerini yönetme

Mobil uygulamanın kullanılabilir olması koşuluyla, önce bir web uygulamasından eylem kodu bağlantısını yönetmeyi ve ardından başarıyla tamamlandıktan sonra başka bir web sayfasına veya mobil uygulamaya yönlendirmeyi 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 geri yönlendirmesine olanak tanır.

Burada kullanılan 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 bölümüne 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ıyı herhangi bir ek bağımlılık olmadan yakalayabilir ve işleyebilirsiniz, ancak 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 işlemlerini gerçekleştirirken, oobCode sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından değişikliğin etkili olması için, yani e-postanın doğrulanması için applyActionCode aracılığıyla uygulanması gerekir.

Bir mobil uygulamada e-posta eylemlerini yönetme

Yüklü olması koşuluyla, önce mobil uygulamanızdaki eylem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarıyla, android.installApp aracılığıyla, cihazın destekliyorsa ve önceden yüklenmemişse uygulamanın yükleneceğini 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 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 gerekecektir.

Hiçbir 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 bölümüne bakın.

Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, yükü oobCode , mode , apiKey ve continueUrl sorgu parametreleriyle oobCode yapılandırılan 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ıyı herhangi bir ek bağımlılık olmadan yakalayabilir ve işleyebilirsiniz, ancak derin bağlantıyı sizin için ayrıştırmak için FDL istemci kitaplığını kullanmanızı öneririz. İşlem 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 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 etkili olması için, yani e-postanın doğrulanması için applyActionCode aracılığıyla uygulanması gerekir.