E-posta İşlemlerinde Aktarma Durumu

Şifre sıfırlama işlemleri veya kullanıcının e-posta adresini doğrulama için e-posta işlemleri gönderirken devam URL'si aracılığıyla durumu iletebilirsiniz. Bu sayede kullanıcı, işlem tamamlandıktan sonra uygulamaya geri dönebilir. Ayrıca, e-posta işlem bağlantısının bir web sayfası yerine mobil uygulamadan yüklendiğinde doğrudan mobil uygulamadan mı yoksa web sayfasından mı işleneceğini belirtebilirsiniz.

Bu, aşağıdaki yaygın senaryolarda son derece yararlı olabilir:

  • Şu anda giriş yapmamış 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. Kullanıcı, akış sonunda 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ı, abone olmadan önce kullanıcının e-posta adresini doğrulamasını gerektirebilir. Kullanıcı, e-posta doğrulama akışında ilerler 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. Devam URL'si aracılığıyla durumu iletme özelliği bunu mümkün kılar.

Devam URL'si aracılığıyla durumu iletme özelliği, Firebase Auth'un sunduğu ve kullanıcı deneyimini önemli ölçüde iyileştirebilecek güçlü bir özelliktir.

E-posta işlemlerinde devam URL'sinin durumunu iletme

Devam URL'sinin güvenli bir şekilde iletilebilmesi için URL'nin alanının Firebase konsolunda beyaz listeye eklenmesi gerekir. Bu işlem, Kimlik doğrulama bölümünde yapılır. Alanınız, Giriş yöntemi sekmesinin altındaki Yetkili alanlar listesine eklenir (henüz eklenmemişse).

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

Swift

Parametre Tür Açıklama
URL Dize

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

  • 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, bağlantının derin bağlantısındaki continueUrl sorgu parametresidir.Hosting
iOSBundleID Dize Firebase Authentication'nin Apple cihazda açılacak yalnızca web bağlantısı mı yoksa mobil bağlantı mı oluşturacağını belirlemesine yardımcı olmak için iOS paket kimliğini ayarlar
androidPackageName Dize Firebase Authentication'ün yalnızca web'de açılan bir bağlantı mı yoksa Android cihazda açılan bir mobil bağlantı mı oluşturacağını belirlemesine yardımcı olmak için Android paket adını ayarlar
handleCodeInApp Boole E-posta işlem bağlantısının önce mobil uygulamada mı yoksa web bağlantısında mı açılacağını belirler. Varsayılan değer yanlıştır. 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ış durumda kod önce web widget'ına gönderilir ve ardından devam edildiğinde yüklüyse uygulamaya yönlendirilir.
linkDomain Dize Bir proje için özel barındırma bağlantısı alanları tanımlandığında, bağlantı belirli bir mobil uygulama tarafından açıldığında hangisinin kullanılacağını belirtin. Aksi takdirde, varsayılan alan otomatik olarak seçilir (ör. PROJECT_ID.firebaseapp.com).
dynamicLinkDomain Dize Kullanımdan kaldırıldı. Bu parametreyi belirtmeyin.

Objective-C

Parametre Tür Açıklama
URL NSString

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

  • 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, bağlantının derin bağlantısındaki continueUrl sorgu parametresidir.Hosting
iOSBundleID NSString Firebase Authentication'nin Android veya Apple cihazda açılan yalnızca web bağlantısı mı yoksa mobil bağlantı mı oluşturacağını belirlemesine yardımcı olmak için iOS paket kimliğini ayarlar
androidPackageName NSString Firebase Authentication'nin Android veya Apple cihazda açılacak bir web bağlantısı mı yoksa mobil bağlantı mı oluşturacağını belirlemesine yardımcı olmak için Android paket adını ayarlar
handleCodeInApp BOOL E-posta işlem bağlantısının önce mobil uygulamada mı yoksa web bağlantısında mı açılacağını belirler. Varsayılan değer yanlıştır. 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ış durumda kod önce web widget'ına gönderilir ve ardından devam edildiğinde yüklüyse uygulamaya yönlendirilir.
linkDomain NSString Bir proje için özel Hosting bağlantı alanları tanımlandığında, bağlantı belirli bir mobil uygulama tarafından açıldığında hangisinin kullanılacağını belirtin. Aksi takdirde, varsayılan alan otomatik olarak seçilir (ör. PROJECT_ID.firebaseapp.com).
dynamicLinkDomain NSString Kullanımdan kaldırıldı. Bu parametreyi belirtmeyin.

Aşağıdaki örnekte, özel Hosting bağlantı alanıcustom-domain.com kullanılarak önce mobil uygulamada açılacak bir e-posta doğrulama bağlantısının nasıl gönderileceği gösterilmektedir. Derin bağlantı, devam URL'si yükünü içerirhttps://www.example.com/?email=user@example.com.

Swift

var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase Authentication, mobil uygulamada açılması amaçlanan bir bağlantı gönderirken Firebase Hosting kullanır. Bu özelliği kullanabilmek için Hosting bağlantılarının Firebase konsolunda yapılandırılması gerekir.

  1. Apple uygulamalarını yapılandırma:

    1. Bu bağlantıları uygulamanızdan yönetmeyi planlıyorsanız Hosting bağlantı alanını, uygulama özelliklerinde İlişkili Alan olarak yapılandırmanız gerekir.
    2. Bu konuda daha fazla bilgi için iOS barındırma bağlantılarını alma talimatları başlıklı makaleyi inceleyin.
  2. Android uygulamalarını yapılandırma:

    1. Bu bağlantıları Android uygulamanızdan yönetmeyi planlıyorsanız uygulamanızın paket adının Firebase konsolu proje ayarlarında belirtilmesi gerekir. Ayrıca, uygulama sertifikasının SHA-1 ve SHA-256 değerlerinin de sağlanması gerekir.
    2. AndroidManifest.xml dosyanızda derin bağlantının intent filtresini de yapılandırmanız gerekir.
    3. Bu konuda daha fazla bilgi için Android barındırma bağlantılarını alma talimatları başlıklı makaleyi inceleyin.

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

İşlem kodu bağlantısını önce bir web uygulamasından işlemek isteyip istemediğinizi ve ardından başarılı bir şekilde tamamlandıktan sonra (mobil uygulama mevcutsa) başka bir web sayfasına veya mobil uygulamaya yönlendirmek isteyip istemediğinizi belirtebilirsiniz. Bu işlem, FIRActionCodeSettings (Obj-C) veya ActionCodeSettings (Swift) nesnesinde handleCodeInApp değerinin false olarak ayarlanmasıyla yapılır. Paket kimliği veya Android paket adı zorunlu olmasa da bunların sağlanması, e-posta işlemi kodu tamamlandığında kullanıcının belirtilen uygulamaya geri yönlendirilmesine olanak tanır.

Burada kullanılan web URL'si, e-posta işlem şablonları bölümünde yapılandırılan URL'dir. Tüm projeler için varsayılan bir yapılandırma ayrılır. E-posta işlem 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ı, ActionCodeSettings nesnesinde belirtilen URL olan bir Hosting bağlantısı olur.

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 geçerli olması (yani e-postanın doğrulanması) için applyActionCode üzerinden uygulanması gerekir.

Mobil uygulamada e-posta işlemlerini işleme

İşlem kodu bağlantısını, yüklü olması koşuluyla önce mobil uygulamanızda işlemek isteyip istemediğinizi belirtebilirsiniz. Bağlantı, mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa bunun yerine bir web sayfasından açılır. Bu işlem, FIRActionCodeSettings (Obj-C) veya ActionCodeSettings (Swift) nesnesinde handleCodeInApp değerinin true olarak ayarlanmasıyla yapılır. Mobil uygulamanın Android paket adının veya paket kimliğinin de belirtilmesi gerekir. 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 anahtar ayrılır. E-posta işlem 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ü oobCode, mode, apiKey ve continueUrl sorgu parametreleriyle Console'da yapılandırılmış işlem kodu URL'si olan bir Hosting bağlantısı olur. İkincisi, FIRActionCodeSettings (Obj-C) veya ActionCodeSettings (Swift) nesnesinde belirtilen orijinal URL olur. İşlem kodu, e-posta işleyicilerini özelleştirme bölümünde açıklanan web akışında işlenmesine 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 geçerli olması (yani e-postanın doğrulanması) için applyActionCode üzerinden uygulanması gerekir.