E-posta İşlemlerinde Aktarma Durumu

Şifre sıfırlama veya kullanıcı e-posta adresini doğrulama için e-posta işlemleri gönderirken devam URL'si üzerinden durumu iletebilirsiniz. Bu, kullanıcının işlem tamamlandıktan sonra uygulamaya geri dönmesini sağlar. Ayrıca, e-posta işlem bağlantısının yüklendiğinde bir web sayfası yerine doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini belirtebilirsiniz.

Bu özellik, aşağıdaki yaygın senaryolarda son derece faydalı olabilir:

  • Şu anda oturum açmamış 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ı tetiklemiş olabilir. Akışın sonunda kullanıcı, erişmeye çalıştığı uygulama bölümüne geri dönmeyi bekler.

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

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

Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde iyileştirebilecek güçlü bir özellik olan devam URL'si aracılığıyla durumu iletme olanağına sahip olursunuz.

E-posta işlemlerinde durumu/devam URL'sini iletme

Devam URL'sini güvenli bir şekilde iletmek için URL'nin alan adının Firebase konsolunda izin verilenler listesine eklenmesi gerekir. Bu işlem, Kimlik doğrulama bölümünde, bu alan henüz eklenmemişse Oturum açma yöntemi sekmesindeki Yetkili alanlar listesine eklenerek yapılır.

Şifre sıfırlama e-postası veya doğrulama e-postası gönderirken 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 Play Console'da kaydedilmesi gerekir. Paket kimliği sağlanmazsa bu alanın değeri, uygulamanın ana paketinin paket kimliği olarak ayarlanır.
androidPackageName Dize Android paket 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 henüz yüklenmemişse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. Bu alan packageName olmadan sağlanırsa packageName'in bu alanla birlikte sağlanması gerektiğini açıklayan bir hata verilir.
androidMinimumVersion Dize Bu akışta desteklenen uygulamanın minimum sürümü. minimumVersion belirtilmişse ve uygulamanın eski bir sürümü yüklüyse kullanıcı, uygulamayı yükseltmek için Play Store'a yönlendirilir. Android uygulamasının Console'da kayıtlı olması gerekir.
handleCodeInApp bool E-posta işlem bağlantısının önce bir mobil uygulamada mı yoksa web bağlantısında mı açılacağı. Varsayılan değer false'tur. Doğru olarak 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ış durumda kod önce web widget'ına gönderilir ve devam edildiğinde yüklüyse uygulamaya yönlendirilir.
dynamicLinkDomain Dize (Desteği sonlandırıldı, `linkDomain` kullanın) Geçerli bağlantı Firebase Dynamic Links kullanılarak açılacaksa kullanılacak dinamik bağlantı alanını (veya alt alanını) ayarlar. Proje başına birden fazla dinamik bağlantı alanı yapılandırılabilir. Bu nedenle, bu alan birini açıkça seçme olanağı sunar. Hiçbiri sağlanmazsa varsayılan olarak ilk alan kullanılır. linkDomain Dize Bağlantı belirli bir mobil uygulama üzerinden açılacaksa kullanılacak isteğe bağlı özel Firebase Hosting alanı. Alan, Firebase Hosting'de yapılandırılmalı ve projenin sahibi olmalıdır. Bu, varsayılan bir Hosting alanı olamaz (`web.app` veya `firebaseapp.com`). Bu ayar, desteği sonlandırılan `dynamicLinkDomain` ayarının yerini alır.

Aşağıdaki örnekte, özel dinamik bağlantı alanını kullanarak example.page.link önce mobil uygulamada açılacak bir e-posta doğrulama bağlantısının Firebase Dynamic Link olarak nasıl gönderileceği gösterilmektedir example.page.link (iOS uygulaması com.example.ios veya Android uygulaması com.example.android. Uygulama, henüz yüklenmemişse yüklenir ve minimum sürüm 12 olur). Derin bağlantı, devam URL'si yükünü içerir https://www.example.com/?email=user@example.com.

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ı gereken bir bağlantı gönderirken Firebase Dynamic Links'i kullanır. Bu özelliği kullanmak için Firebase Konsolu'nda Dinamik Bağlantılar'ı yapılandırmanız gerekir.

  1. Firebase Dynamic Links'i etkinleştirin:

    1. Firebase konsolunda Dynamic Links bölümünü açın.

    2. Henüz Dinamik Bağlantılar şartlarını kabul etmediyseniz ve Dinamik Bağlantılar alanı oluşturmadıysanız şimdi yapın.

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

      example.page.link

    4. Apple veya Android uygulamanızı gelen bağlantıyı yakalayacak ş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 Console proje ayarlarında Android paket adının belirtilmesi gerekir. Ayrıca, uygulama sertifikasının SHA-1 ve SHA-256'sı da sağlanmalıdır.
    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 Dinamik Bağlantı talimatlarını alma başlıklı makaleyi inceleyin.
  3. Apple uygulamalarını yapılandırma:

    1. Bu bağlantıları uygulamanızdan işlemeyi planlıyorsanız paket kimliğinin Firebase Console proje ayarlarında belirtilmesi gerekir. Ayrıca App Store kimliği ve Apple Developer Team kimliği de belirtilmelidir.
    2. Ayrıca, FDL geçiş bağlantısı alanını uygulama özelliklerinizde İlişkili Alan olarak yapılandırmanız gerekir.
    3. Uygulamanızı iOS 8 ve önceki sürümlerde dağıtmayı planlıyorsanız paket kimliğinizi gelen URL'ler için özel bir şema olarak ayarlamanız gerekir.
    4. Bu konu hakkında daha fazla bilgi için Apple platformları dinamik bağlantı talimatlarını alma başlıklı makaleyi inceleyin.

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

Mobil uygulama varsa web uygulamasından gelen işlem kodu bağlantısını önce işleyip 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 işlem, ActionCodeSettings nesnesinde handleCodeInApp değeri false olarak ayarlanarak yapılır. Paket kimliği veya Android paket adı zorunlu olmasa da bunların sağlanması, kullanıcının e-posta işlem kodu tamamlandığında belirtilen uygulamaya geri yönlendirilmesine olanak tanır.

Burada kullanılan web URL'si, e-posta işlemi ş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 işlemi işleyicisini özelleştirme hakkında daha fazla bilgi edinmek için E-posta işleyicilerini özelleştirme başlıklı makaleyi inceleyin.

Bu durumda, continueURL sorgu parametresindeki bağlantı, yükü ActionCodeSettings nesnesinde belirtilen URL olan bir FDL bağlantısı olur. Uygulamanızdan gelen bağlantıyı ek bir bağımlılık olmadan yakalayıp işleyebilmenize rağmen, derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz.

E-posta doğrulama gibi e-posta işlemleri gerçekleştirilirken oobCode sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode aracılığıyla uygulanması gerekir.Böylece değişiklik (ör. e-postanın doğrulanması) geçerli olur.

Mobil uygulamada e-posta işlemlerini işleme

Yüklüyse işlem kodu bağlantısını önce mobil uygulamanızda işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarında, androidInstallApp aracılığıyla cihaz destekliyorsa ve uygulama henüz yüklenmemişse uygulamanın yüklenmesini 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 değeri true olarak ayarlanarak yapılır. Mobil uygulamanın Android paket adı veya paket kimliği de belirtilmelidir.Mobil uygulama olmadığında burada kullanılan yedek web URL'si, e-posta işlemi ş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 işlemi işleyicisini özelleştirme hakkında daha fazla bilgi edinmek için E-posta işleyicilerini özelleştirme başlıklı makaleyi inceleyin.

Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, yükü Console'da yapılandırılmış işlem kodu URL'si olan ve oobCode, mode, apiKey ve continueUrl sorgu parametrelerini içeren bir FDL bağlantısı olur. İkincisi, ActionCodeSettings nesnesinde belirtilen orijinal URL olacaktır. Uygulamanızdan gelen bağlantıyı ek bir bağımlılık olmadan yakalayıp işleyebilmenize rağmen, derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz. İşlem kodu, e-posta işleyicilerini özelleştirme bölümünde açıklanan web akışında işlendiği şekilde doğrudan bir mobil uygulamadan uygulanabilir.

E-posta doğrulama gibi e-posta işlemleri gerçekleştirilirken oobCode sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode aracılığıyla uygulanması gerekir.Böylece değişiklik (ör. e-postanın doğrulanması) geçerli olur.