E-posta İşlemlerinde Aktarma Durumu

Şifre sıfırlama için e-posta işlemleri gönderirken veya bir kullanıcının e-postasını doğrularken durumu devam URL'si ile iletebilirsiniz. Bu sayede kullanıcı, işlem tamamlandıktan sonra uygulamaya geri dönebilir. Buna ek olarak, e-posta işlem bağlantısının bir web sayfası yerine yüklendiğinde doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini belirtebilirsiniz.

Bu, aşağıdaki sık karşılaşılan senaryolarda son derece yararlı olabilir:

  • Oturumu açık olmayan bir kullanıcı, oturum açmasını gerektiren içeriğe erişmeye çalışıyor olabilir. Ancak kullanıcı, şifresini unutmuş olabilir ve bu nedenle şifre sıfırlama akışını tetikleyebilir. Akışın sonunda kullanıcı, uygulamanın erişmeye çalıştığı bölüme geri dönmeyi bekler.

  • Uygulamalar yalnızca doğrulanmış hesaplara erişim sunabilir. Örneğin, bir bülten uygulamasında kullanıcının abone olmadan önce e-posta adresini doğrulaması gerekebilir. Kullanıcı e-posta doğrulama akışından geçer ve aboneliğini tamamlaması için uygulamaya geri döndürülmesini bekler.

  • Genel olarak, kullanıcı bir Apple uygulamasında şifre sıfırlama veya e-posta doğrulama akışı başlattığında, uygulama içinde akışı tamamlamayı bekler. Devam URL'si üzerinden durum iletme özelliği bunu mümkün kılar.

Devam URL'si aracılığıyla durum aktarma imkanı, Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde iyileştirebilecek güçlü bir özelliktir.

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

Devam eden bir URL'yi güvenli bir şekilde iletmek için URL'nin alanının Firebase konsolunda izin verilenler listesine eklenmiş olması gerekir. Bu işlem, Oturum açma yöntemi sekmesinin altındaki Yetkili alanlar listesine bu alanı ekleyerek Kimlik Doğrulama bölümünde yapılır.

Şifre sıfırlama e-postası veya doğrulama e-postası gönderilirken ActionCodeSettings örneği sağlanmalıdır. Bu arayüz aşağıdaki parametreleri alır:

Parametre Tür Açıklama
url Dize

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

  • Bağlantı, web işlemi 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.
iOSBundleId Dize Paket kimliğini ayarlar. Bu işlem, bağlantıyı yüklü bir Apple uygulamasında açmaya çalışır. Uygulamanın Console'a kayıtlı olması gerekir. Paket kimliği sağlanmamışsa bu alanın değeri, uygulamanın ana paketinin paket kimliğine ayarlanır.
androidPackageName Dize Android paketi adını ayarlar. Bu işlem, bağlantıyı yüklü bir Android uygulamasında açmaya çalışır.
androidInstallApp Bool 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 değerinin bu alanla bağlantılı olarak sağlanması gerektiğini açıklayan bir hata verilir.
androidMinimumVersion Dize Uygulamanın bu akışta desteklenen minimum sürümü. MinimumSürüm belirtilmişse ve uygulamanın daha eski bir sürümü yüklüyse kullanıcı, uygulamayı yeni sürüme geçirmek için Play Store'a yönlendirilir. Android uygulamasının Console'da kayıtlı olması gerekir.
handleCodeInApp Bool E-posta işlemi bağlantısının önce bir mobil uygulamada mı yoksa bir web bağlantısında mı açılacağı. Varsayılan değer, false (yanlış) değeridir. Doğru değerine ayarlandığında işlem kodu bağlantısı, Geçiş Bağlantısı veya Android Uygulama Bağlantısı olarak gönderilir ve yüklüyse uygulama tarafından açılır. Yanlış bir durumda kod önce web widget'ına gönderilir, ardından Devam'da yüklüyse uygulamaya yönlendirilir.
dynamicLinkDomain Dize Mevcut bağlantı Firebase Dynamic Links kullanılarak açılacaksa dinamik bağlantı alan adını (veya alt alan adını) ayarlar. Proje başına birden fazla dinamik bağlantı alan adı yapılandırılabileceğinden bu alan açıkça bir alan seçme imkanı sağlar. Herhangi bir alan sağlanmazsa varsayılan olarak ilk alan kullanılır.

Aşağıdaki örnekte, özel dinamik bağlantı alan adı example.page.link kullanılarak önce bir mobil uygulamada Firebase Dinamik Bağlantı olarak açılacak bir e-posta doğrulama bağlantısının nasıl gönderileceği gösterilmektedir (uygulamanın yüklü olmadığı ve minimum sürüm 12 olduğu durumlarda, uygulamanın yükleneceği iOS uygulaması com.example.ios veya Android uygulaması com.example.android). Derin bağlantı, devam URL yükünü https://www.example.com/?email=user@example.com içerir.

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

Firebase Auth, mobil uygulamada açılması amaçlanan bir bağlantı gönderirken Firebase Dynamic Links'i kullanır. Bu özelliği kullanmak için Firebase Konsolu'nda Dynamic Links'in 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 Dynamic Links şartlarını kabul etmediyseniz ve bir Dynamic Links alanı oluşturmadıysanız bunu hemen yapın.

    3. Daha önce bir Dynamic Links alan oluşturduysanız bunu not edin. Dynamic Links alanı genellikle aşağıdaki örnek gibi görünür:

      example.page.link

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

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

    1. Bu bağlantıları Android uygulamanızdan işlemeyi planlıyorsanız Firebase konsolu proje ayarlarında Android paket adını belirtmeniz gerekir. Ayrıca, uygulama sertifikasının SHA-1 ve SHA-256'sının sağlanması gerekir.
    2. Ayrıca, AndroidManifest.xml dosyanızda derin bağlantı için intent filtresini yapılandırmanız gerekir.
    3. Bu konu hakkında daha fazla bilgi için Android Dynamic Links'i alma talimatlarını inceleyin.
  3. Apple uygulamalarını yapılandırma:

    1. Uygulamanızdan bu bağlantıları yönetmeyi planlıyorsanız paket kimliğinin Firebase Konsolu proje ayarlarında belirtilmesi gerekir. App Store Kimliği ve Apple Geliştirici Ekibi Kimliğinin de belirtilmesi gerekir.
    2. Ayrıca, uygulama özelliklerinizde FDL evrensel bağlantı alanını İlişkili alan olarak yapılandırmanız gerekir.
    3. Uygulamanızı iOS 8 ve daha eski sürümlere dağıtmayı planlıyorsanız paket kimliğinizi, gelen URL'ler için özel şema olarak ayarlamanız gerekir.
    4. Bu konu hakkında daha fazla bilgi için Apple platformları Dynamic Links'i alma talimatlarını inceleyin.

Web uygulamasındaki e-posta işlemlerini işleme

İşlem kodu bağlantısını önce bir web uygulamasından işleyip işlemeyi başarıyla tamamladıktan sonra, mobil uygulamanın kullanılabilir olması koşuluyla başka bir web sayfasına veya mobil uygulamaya yönlendirme yapmak isteyip istemediğinizi belirtebilirsiniz. Bu işlem, ActionCodeSettings nesnesinde handleCodeInApp politikası false değerine ayarlanarak yapılır. 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önlendirme yapmasına olanak tanır.

Burada kullanılan web URL'si, e-posta işlem şablonları bölümünde yapılandırılan web URL'sidir. Tüm projeler için varsayılan bir temel sağlanır. E-posta işlem işleyicisinin nasıl özelleştirileceği 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ı olur. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı ele alıp işleyebilirsiniz ancak 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 işlemleri yapılırken, değişikliğin geçerli olması (ör. e-postanın doğrulanması) için oobCode sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve applyActionCode aracılığıyla uygulanması gerekir.

Mobil uygulamada e-posta işlemlerini yönetme

İşlem kodu bağlantısının yüklü olması koşuluyla önce mobil uygulamanızdaki işlem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarında, cihaz destekliyorsa ve uygulama halihazırda yüklü değilse androidInstallApp aracılığıyla uygulamanın yükleneceğini de belirtebilirsiniz. Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa bunun yerine bir web sayfasından açılır. Bu işlem, ActionCodeSettings nesnesinde handleCodeInApp politikası true değerine ayarlanarak yapılır. Mobil uygulamanın Android paket adının veya paket kimliğinin de belirtilmesi gerekir.Burada kullanılan yedek web URL'si, mobil uygulama olmadığında e-posta işlem şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir sertifika sağlanır. E-posta işlem işleyicisinin nasıl özelleştirileceği 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 Console'da yapılandırılan işlem kodu URL'si olan bir FDL bağlantısı olur. İkinci değer, ActionCodeSettings nesnesinde belirtilen orijinal URL olur. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı ele alıp işleyebilirsiniz ancak derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz. İşlem kodu, e-posta işleyicileri özelleştirme bölümünde açıklanan web akışındaki işlenme şekline benzer şekilde doğrudan bir mobil uygulamadan uygulanabilir.

E-posta doğrulaması gibi e-posta işlemleri yapılırken, değişikliğin geçerli olması (ör. e-postanın doğrulanması) için oobCode sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve applyActionCode aracılığıyla uygulanması gerekir.