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 beyaz listeye alınması 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 ActionCodeSettings örneği bir parola sıfırlama e-posta veya bir doğrulama e gönderirken temin edilmesi gerekmektedir. Bu ilişkili oluşturulabilir ActionCodeSettings.Builder aşağıdaki yöntemleri içeren sınıf:

Yöntem Açıklama
setUrl(String url)

Farklı bağlamlarda farklı anlamlara sahip olan bağlantıyı (dur/dur URL'sini) 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.
setIOSBundleId(String iOSBundleId) 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.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Android paket adını ayarlar. Bu, yüklüyse bağlantıyı bir android uygulamasında açmaya çalışacaktır. İnstallIfNotAvailable olarak ayarlanırsa true , bunun ve Uygulamanın cihazı destekler zaten yüklü değilse Android uygulamasını yüklemek belirtir. 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.
setHandleCodeInApp(boolean status) 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önderilecek ve ardından devam edildiğinde, yüklüyse uygulamaya yönlendirilecektir.
setDynamicLinkDomain(String dynamicLinkDomain) 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ı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, bir Firebase dinamik bağlantı (iOS uygulaması olarak ilk mobil uygulama olarak açılacak bir e-posta doğrulama bağlantısını nasıl gönderileceği göstermektedir com.example.ios veya Android uygulaması com.example.android ). Derin bağlantı URL yükü devam içerecektir https://www.example.com/?email=user@example.com .

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin+KTX

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build()

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

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 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. AndroidManifest.xml dosyanızdaki derin bağlantı için niyet filtresini de yapılandırmanız gerekecektir.
    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 arama yapılır setHandleCodeInApp(false) içinde ActionCodeSettings.Builder 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ıyı herhangi bir ek bağımlılık olmadan yakalayabilir ve yönetebilirsiniz, ancak 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 eylemlerini işleme

Eylem kodu bağlantısını, yüklü olması koşuluyla, öncelikle mobil uygulamanız içinde işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarının ile, aynı zamanda aracılığıyla belirtmek için yeteneği var installIfNotAvailable Uygulamanın cihazı destekler o ve zaten yüklü değilse yüklenecek olduğunu boolean. Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa, bunun yerine bir web sayfasından açılır. Bu çağırarak yapılır setHandleCodeInApp(true) içinde ActionCodeSettings.Builder nesne. Mobil uygulamanın Android paket adının 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ıyı herhangi bir ek bağımlılık olmadan yakalayabilir ve yönetebilirsiniz, ancak 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.