Şifre 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 geçirebilirsiniz. Bu, kullanıcıya işlem tamamlandıktan sonra uygulamaya geri dönme yeteneği sağlar. Ek olarak, e-posta eylem bağlantısını web sayfası yerine yüklendiğinde doğrudan bir mobil uygulamadan işleyip işlemeyeceğ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ş 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-postasını doğrulamasını isteyebilir. 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ı mobil cihazından akışı başlatmış olabilir ve doğrulamanın ardından tarayıcı yerine mobil uygulamasına geri dönmeyi bekleyebilir.
Devam eden bir URL aracılığıyla durumu geçirme yeteneğine sahip olmak, Firebase Auth'nin sağladığı güçlü bir özelliktir ve kullanıcı deneyimini önemli ölçüde geliştirebilir.
E-posta işlemlerinde durum / devam URL'si geçiriliyor
Devam eden bir URL'yi güvenli bir şekilde geçirmek için, URL'nin etki alanının Firebase konsolunda beyaz listeye alınması gerekir. Bu, Kimlik Doğrulama bölümünde, 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önderirken ActionCodeSettings örneğinin sağlanması gerekir. Aşağıdaki yöntemleri içeren ilişkili ActionCodeSettings.Builder sınıfı ile 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) | İOS paket kimliğini ayarlar. Bu, yüklüyse bir iOS uygulamasında bağlantıyı açmaya çalışacaktır. İOS 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 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ü yüklenirse, kullanıcı uygulamayı yükseltmek için Play Store'a yönlendirilir. Android uygulamasının Konsola kaydedilmesi 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önderilecek ve yüklüyse uygulama tarafından açılacaktır. Yanlış durumda, kod önce web widget'ına gönderilecek ve ardından Continue, yüklüyse uygulamaya yeniden 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 alanı) ayarlar. Proje başına birden fazla dinamik bağlantı alanı yapılandırılabildiğinden, bu alan açıkça birini seçme yeteneği sağlar. Hiçbiri sağlanmazsa, ilk alan varsayılan olarak kullanılır. |
Aşağıdaki örnek, bir mobil uygulamada önce Firebase Dynamic Link (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.
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 Dynamic Links'i 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.
Henüz Dinamik Bağlantılar şartlarını kabul etmediyseniz ve bir Dinamik Bağlantılar alanı oluşturmadıysanız, şimdi yapın.
Zaten bir Dinamik Bağlantılar alanı oluşturduysanız, bunu bir yere not edin. Bir Dinamik Bağlantılar alanı genellikle aşağıdaki örneğe benzer:
example.page.link
İOS veya Android uygulamanızı gelen bağlantıya müdahale edecek şekilde yapılandırdığınızda bu değere ihtiyacınız olacaktır.
Android uygulamalarını yapılandırma:
- Bu bağlantıları Android uygulamanızdan işlemeyi planlıyorsanız, Android paket adının Firebase Konsolu proje ayarlarında belirtilmesi gerekir. Ek olarak, uygulama sertifikasının SHA-1 ve SHA-256'sının sağlanması gerekir.
- Ayrıca AndroidManifest.xml dosyanızdaki derin bağlantı için amaç filtresini yapılandırmanız gerekecektir.
- Bununla ilgili daha fazla bilgi için Android Dinamik Bağlantıları Alma talimatlarına bakın .
İOS 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. Ek olarak, App Store Kimliği ve Apple Geliştirici Ekip Kimliğinin de belirtilmesi gerekir.
- Ayrıca, FDL evrensel bağlantı etki alanını, uygulama yeteneklerinizde bir İlişkili Etki Alanı olarak yapılandırmanız gerekecektir.
- Uygulamanızı iOS 8 ve daha eski sürümlere 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ı Alma talimatlarına bakın .
Bir web uygulamasında e-posta eylemlerini yönetme
Mobil uygulamanın kullanılabilir olması koşuluyla, önce bir web uygulamasından eylem kodu bağlantısını yönetmeyi ve ardından başarıyla tamamlandıktan sonra başka bir web sayfasına veya mobil uygulamaya yönlendirmeyi 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 işlem 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ı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 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ı olacaktır. Uygulamanızdan gelen bağlantıyı herhangi bir ek bağımlılık olmadan yakalayabilir ve işleyebilirsiniz, ancak derin bağlantıyı sizin için ayrıştırmak için FDL istemci kitaplığını kullanmanızı öneririz.
E-posta doğrulaması gibi e-posta işlemlerini gerçekleştirirken, oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından değişikliğin etkili olması için, yani e-postanın doğrulanması için applyActionCode
aracılığıyla uygulanması gerekir.
Bir mobil uygulamada e-posta eylemlerini yönetme
Yüklü olması koşuluyla, önce mobil uygulamanızdaki eylem kodu bağlantısını işlemek isteyip istemediğinizi belirtebilirsiniz. Android uygulamalarıyla, installIfNotAvailable
boolean aracılığıyla, aygıtın destekliyorsa ve henüz yüklenmemişse uygulamanın installIfNotAvailable
belirtme olanağına da sahipsiniz. Bağlantı, 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ı veya iOS paket kimliğinin de belirtilmesi gerekecektir.
Hiçbir 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 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 oobCode
yapılandırılan eylem kodu URL'si olan bir FDL bağlantısı olacaktır. İkincisi, ActionCodeSettings
nesnesinde belirtilen orijinal URL
olacaktır. Uygulamanızdan gelen bağlantıyı herhangi bir ek bağımlılık olmadan yakalayabilir ve işleyebilirsiniz, ancak derin bağlantıyı sizin için ayrıştırmak için FDL istemci kitaplığını kullanmanızı öneririz. İşlem 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 işlemlerini gerçekleştirirken, oobCode
sorgu parametresindeki işlem kodunun derin bağlantıdan ayrıştırılması ve ardından değişikliğin etkili olması için, yani e-postanın doğrulanması için applyActionCode
aracılığıyla uygulanması gerekir.