Parola 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. Ayrıca, bir web sayfası yerine yüklendiğinde e-posta eylem bağlantısının doğrudan bir mobil uygulamadan işlenip işlenmeyeceğini belirtebilirsiniz.
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-posta adresini 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ış olabilir ve doğrulamadan sonra tarayıcı yerine mobil uygulamasına geri dönmeyi bekleyebilir.
Devam URL'si aracılığıyla durumu iletme yeteneğine sahip olmak, Firebase Auth'un sağladığı ve kullanıcı deneyimini önemli ölçüde geliştirebilen güçlü bir özelliktir.
E-posta işlemlerinde durum/devam URL'sini geçirme
Bir devam URL'sini güvenli bir şekilde iletmek için, URL'nin etki alanının Firebase konsolunda beyaz listeye alınması gerekir. Bu, Kimlik Doğrulama bölümünde, zaten orada değilse, bu etki alanını Oturum açma yöntemi sekmesi altındaki Yetkili etki alanları listesine ekleyerek yapılır.
Parola sıfırlama e-postası veya doğrulama e-postası gönderilirken bir ActionCodeSettings örneğinin sağlanması gerekir. Aşağıdaki yöntemleri içeren ilişkili ActionCodeSettings.Builder sınıfıyla oluşturulabilir:
Yöntem | Açıklama |
---|---|
setUrl(String url) | Farklı bağlamlarda farklı anlamlara sahip olan bağlantıyı (durum/devam URL'si) ayarlar:
|
setIOSBundleId(String iOSBundleId) | iOS paket kimliğini ayarlar. Bu, yüklüyse bağlantıyı bir iOS uygulamasında açmaya çalışır. iOS uygulamasının Konsolda kayıtlı olması 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. installIfNotAvailable true olarak ayarlanırsa, cihaz destekliyorsa ve uygulama zaten yüklü değilse Android uygulamasının yüklenip yüklenmeyeceğini belirtir. MinimumVersion belirtilirse ve uygulamanın daha eski bir sürümü kuruluysa kullanıcı, uygulamayı yükseltmek için Play Store'a yönlendirilir. Android uygulamasının Konsolda kayıtlı olması gerekir. |
setHandleCodeInApp(boolean status) | 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önderilir ve yüklüyse 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ı alanını (veya alt etki alanını) ayarlar. Proje başına birden fazla 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 mobil uygulamada öncelikle Firebase Dinamik Bağlantısı (iOS uygulaması com.example.ios
veya Android uygulaması com.example.android
) olarak açılacak bir e-posta doğrulama bağlantısının nasıl gönderileceğini gösterir. Derin bağlantı, devam eden URL yükünü https://www.example.com/?email=user@example.com
içerecektir.
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.") } }
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."); } } });
Firebase Dinamik Bağlantılarını Yapılandırma
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.
Firebase Dynamic Links'i etkinleştirin:
- Firebase konsolunda Dinamik Bağlantılar bölümünü açın.
Dinamik Bağlantılar şartlarını henüz kabul etmediyseniz ve bir Dinamik Bağlantılar alanı oluşturmadıysanız, bunu şimdi yapın.
Zaten bir Dinamik Bağlantılar alanı oluşturduysanız, not alın. Dinamik Bağlantılar alanı genellikle aşağıdaki örneğe benzer:
example.page.link
Gelen bağlantıyı kesmek için Apple veya Android uygulamanızı yapılandırdığınızda bu değere ihtiyacınız olacak.
Android uygulamalarını yapılandırma:
- Bu bağlantıları Android uygulamanızdan yönetmeyi planlıyorsanız, Android paket 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.
- AndroidManifest.xml dosyanızdaki derin bağlantı için niyet filtresini de yapılandırmanız gerekecektir.
- Bununla ilgili daha fazla bilgi için Android Dinamik Bağlantılarını Alma talimatlarına bakın.
iOS uygulamalarını yapılandırma:
- Bu bağlantıları iOS uygulamanızdan işlemeyi planlıyorsanız iOS paket kimliğinin Firebase Konsolu proje ayarlarında belirtilmesi gerekir. Ayrıca App Store ID ve Apple Developer Team ID'nin de belirtilmesi gerekiyor.
- Ayrıca, uygulama yeteneklerinizde FDL evrensel bağlantı etki alanını bir İlişkili Etki Alanı olarak yapılandırmanız gerekecektir.
- Uygulamanızı iOS sürüm 8 ve altına dağıtmayı planlıyorsanız, iOS paket kimliğinizi gelen URL'ler için özel bir şema olarak ayarlamanız gerekir.
- Bununla ilgili daha fazla bilgi için iOS Dinamik Bağlantılarını Alma talimatlarına bakın.
Bir web uygulamasında e-posta eylemlerini yönetme
Eylem kodu bağlantısını önce bir web uygulamasından işlemek ve ardından başarılı bir şekilde tamamlandıktan sonra başka bir web sayfasına veya mobil uygulamanın kullanılabilir olması koşuluyla mobil uygulamaya yönlendirme isteyip istemediğinizi belirtebilirsiniz. Bu, ActionCodeSettings.Builder nesnesinde setHandleCodeInApp(false)
çağrılarak yapılır. Bir iOS paket kimliği veya Android paket adı gerekli olmasa da, bunların sağlanması, kullanıcının e-posta eylem 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ılandır. 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 konusuna bakın.
Bu durumda, continueUrl
sorgu parametresi içindeki bağlantı, yükü ActionCodeSettings
nesnesinde belirtilen URL
olan bir FDL bağlantısı olacaktır. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı yakalayıp işleyebilirken, 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 eylemlerini işlerken, değişikliğin geçerli olması için, yani e-postanın doğrulanması için oobCode
sorgu parametresinden gelen eylem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode
aracılığıyla uygulanması gerekir.
Bir mobil uygulamada e-posta işlemlerini yönetme
Yüklü olması koşuluyla, önce mobil uygulamanızın içindeki eylem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarında ayrıca, cihaz destekliyorsa ve zaten kurulu değilse uygulamanın installIfNotAvailable
boolean aracılığıyla belirtme olanağına da sahipsiniz. Bağlantıya mobil uygulamayı desteklemeyen bir cihazdan tıklanırsa, bunun yerine bir web sayfasından açılır. Bu, ActionCodeSettings.Builder nesnesinde setHandleCodeInApp(true)
çağrılarak yapılır. Mobil uygulamanın Android paket adının veya iOS paket kimliğinin de belirtilmesi gerekecektir.
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. E-posta eylem işleyicisini nasıl özelleştireceğiniz hakkında daha fazla bilgi edinmek için e- posta işleyicilerini özelleştirme konusuna bakın.
Bu durumda, kullanıcıya gönderilen mobil uygulama bağlantısı, yükü oobCode
, mode
, apiKey
ve continueUrl
sorgu parametreleriyle Konsolda yapılandırılan eylem kodu URL'si olan bir FDL bağlantısı olacaktır. İkincisi, ActionCodeSettings
nesnesinde belirtilen orijinal URL
olacaktır. Herhangi bir ek bağımlılık olmadan uygulamanızdan gelen bağlantıyı yakalayıp işleyebilirken, derin bağlantıyı sizin için ayrıştırmak üzere FDL istemci kitaplığını kullanmanızı öneririz. Eylem 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 eylemlerini işlerken, değişikliğin geçerli olması için, yani e-postanın doğrulanması için oobCode
sorgu parametresinden gelen eylem kodunun derin bağlantıdan ayrıştırılması ve ardından applyActionCode
aracılığıyla uygulanması gerekir.