Mobil uygulamaların bazen kullanıcılarla etkileşime girmesi ve e-posta göndererek belirli işlemleri yapmalarını istemesi gerekir.
Firebase istemci SDK'ları, kullanıcılara şifre sıfırlama, e-posta adresi doğrulama ve e-posta tabanlı oturum açma için kullanabilecekleri bağlantılar içeren e-postalar gönderme olanağı sağlar. Şablon tabanlı bu e-postalar Google tarafından gönderilir ve sınırlı ölçüde özelleştirilebilir.
Bunun yerine kendi e-posta şablonlarınızı ve kendi e-posta teslim hizmetinizi kullanmak istiyorsanız bu sayfada, yukarıdaki akışlar için işlem bağlantılarını programatik olarak oluşturmak üzere Firebase Admin SDK'sının nasıl kullanılacağı açıklanmaktadır. Bu bağlantıları kullanıcılarınıza gönderdiğiniz e-postalara ekleyebilirsiniz.
Bu durum, şu avantajları sunar:
- E-posta şablonlarını özelleştirin. Yeni stiller ve özel markalama ekleme, metin ve logoları değiştirme, kullanıcılara tam ad yerine adlarıyla hitap etme gibi işlemler bu kapsamdadır.
- Bağlama göre farklı şablonlar uygulayın. Örneğin, kullanıcı bir bültene abone olmak için e-posta adresini doğruluyorsa bağlamın e-posta içeriğinde sağlanması gerekebilir. Başka bir örnek de e-posta bağlantısı ile oturum açmadır: Bu işlem bir senaryoda aynı kullanıcı tarafından, başka bir senaryoda ise başka bir kullanıcının davetiyle tetiklenebilir. Bağlamın e-postaya dahil edilmesi gerekir.
- Özelleştirilmiş e-posta şablonlarını yerelleştirin.
- Bağlantıyı güvenli bir sunucu ortamından oluşturabilme
- Bağlantının mobil uygulama veya tarayıcı üzerinden nasıl açılacağını ve ek durum bilgilerinin nasıl aktarılacağını özelleştirme olanağı
- E-posta işlem bağlantısı oluşturulurken mobil uygulama akışları için kullanılan mobil bağlantı alanını özelleştirme olanağı.
ActionCodeSettings'i başlatma
E-posta işlemi bağlantısı oluşturabilmek için önce bir ActionCodeSettings
örneği başlatmanız gerekebilir.
ActionCodeSettings
, kullanıcının e-posta bağlantısını tıkladıktan sonra erişilebilen bir devam URL'si aracılığıyla ek durum iletmenize olanak tanır. Bu, kullanıcının işlem tamamlandıktan sonra uygulamaya geri dönmesini de sağlar. Ayrıca, e-posta işlem bağlantısının yüklendiğinde doğrudan bir mobil uygulamadan mı yoksa tarayıcıdan mı işleneceğini belirtebilirsiniz.
Mobil uygulama üzerinden açılması amaçlanan bağlantıların mobil uygulamanızda algılanması için bazı görevleri gerçekleştirmeniz gerekir. E-posta işlemleri için mobil bağlantıları yapılandırma ile ilgili talimatlara bakın.
ActionCodeSettings
örneğini başlatmak için aşağıdaki verileri sağlayın:
Parametre | Tür | Açıklama |
---|---|---|
url |
dize | Farklı bağlamlarda farklı anlamlara gelen bağlantıyı (durum/devam URL'si) ayarlar:
|
iOS |
({bundleId: string}|undefined) | iOS paket kimliğini, Firebase Authentication'ın Apple cihazda açılan yalnızca web'e özel bir bağlantı mı yoksa mobil bağlantı mı oluşturması gerektiğini belirlemesine yardımcı olacak şekilde ayarlar. |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | Firebase Authentication'nın, yalnızca web'e yönelik mi yoksa Android cihazda açılan bir mobil bağlantı mı oluşturması gerektiğini belirlemesine yardımcı olmak için Android paket adını ayarlar. |
handleCodeInApp |
(boolean|undefined) | 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. |
linkDomain |
(string|undefined) | Bir proje için özel barındırma bağlantısı alanları tanımlandığında, bağlantının belirli bir mobil uygulama tarafından açılacağı durumlarda hangi alanın kullanılacağını belirtin. Aksi takdirde, varsayılan alan otomatik olarak seçilir (örneğin, PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(string|undefined) | Kullanımdan kaldırıldı. Bu parametreyi belirtmeyin. |
Aşağıdaki örnekte, ö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ü https://www.example.com/checkout?cartId=1234
içerir. Kullanılan özel Hosting bağlantı alanı custom-domain.com
'dır ve Firebase Hosting ile kullanılacak şekilde yapılandırılmalıdır.
Node.js
const actionCodeSettings = {
// URL you want to redirect back to. The domain (www.example.com) for
// this URL must be whitelisted in the Firebase Console.
url: 'https://www.example.com/checkout?cartId=1234',
// This must be true for email link sign-in.
handleCodeInApp: true,
iOS: {
bundleId: 'com.example.ios',
},
android: {
packageName: 'com.example.android',
installApp: true,
minimumVersion: '12',
},
// The domain must be configured in Firebase Hosting and owned by the project.
linkDomain: 'custom-domain.com',
};
Java
ActionCodeSettings actionCodeSettings = ActionCodeSettings.builder()
.setUrl("https://www.example.com/checkout?cartId=1234")
.setHandleCodeInApp(true)
.setIosBundleId("com.example.ios")
.setAndroidPackageName("com.example.android")
.setAndroidInstallApp(true)
.setAndroidMinimumVersion("12")
.setDynamicLinkDomain("coolapp.page.link")
.build();
Python
action_code_settings = auth.ActionCodeSettings(
url='https://www.example.com/checkout?cartId=1234',
handle_code_in_app=True,
ios_bundle_id='com.example.ios',
android_package_name='com.example.android',
android_install_app=True,
android_minimum_version='12',
dynamic_link_domain='coolapp.page.link',
)
Go
actionCodeSettings := &auth.ActionCodeSettings{
URL: "https://www.example.com/checkout?cartId=1234",
HandleCodeInApp: true,
IOSBundleID: "com.example.ios",
AndroidPackageName: "com.example.android",
AndroidInstallApp: true,
AndroidMinimumVersion: "12",
DynamicLinkDomain: "coolapp.page.link",
}
C#
var actionCodeSettings = new ActionCodeSettings()
{
Url = "https://www.example.com/checkout?cartId=1234",
HandleCodeInApp = true,
IosBundleId = "com.example.ios",
AndroidPackageName = "com.example.android",
AndroidInstallApp = true,
AndroidMinimumVersion = "12",
DynamicLinkDomain = "coolapp.page.link",
};
Daha fazla bilgi için E-posta İşlemlerinde Durumu Geçirme başlıklı makaleyi inceleyin.
Şifre sıfırlama e-posta bağlantısı oluşturma
Şifre sıfırlama bağlantısı oluşturmak için mevcut kullanıcının e-posta adresini ve isteğe bağlı bir ActionCodeSettings
nesnesini sağlayın. İşlem, e-posta işlem bağlantısıyla çözüme ulaşır. Kullanılan e-posta adresi mevcut bir kullanıcıya ait olmalıdır.
Node.js
// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
getAuth()
.generatePasswordResetLink(userEmail, actionCodeSettings)
.then((link) => {
// Construct password reset email template, embed the link and send
// using custom SMTP server.
return sendCustomPasswordResetEmail(userEmail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generatePasswordResetLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_password_reset_link(email, action_code_settings)
# Construct password reset email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
Go
email := "user@example.com"
link, err := client.PasswordResetLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct password reset template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GeneratePasswordResetLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Bağlantı oluşturulduktan sonra özel şifre sıfırlama e-postasına eklenebilir ve özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-postayla gönderilebilir.
Varsayılan şifre sıfırlama açılış sayfasını kullanmıyor ve kendi özel işleyicinizi oluşturuyorsanız özel e-posta işlemi işleyicileri oluşturma başlıklı makaleyi inceleyin.
E-posta doğrulama bağlantısı oluşturma
E-posta doğrulama bağlantısı oluşturmak için mevcut kullanıcının doğrulanmamış e-posta adresini ve isteğe bağlı bir ActionCodeSettings
nesnesini sağlayın. İşlem, e-posta işlem bağlantısıyla çözümlenir.
Kullanılan e-posta adresi mevcut bir kullanıcıya ait olmalıdır.
Node.js
// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
getAuth()
.generateEmailVerificationLink(useremail, actionCodeSettings)
.then((link) => {
// Construct email verification template, embed the link and send
// using custom SMTP server.
return sendCustomVerificationEmail(useremail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generateEmailVerificationLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_email_verification_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
Go
email := "user@example.com"
link, err := client.EmailVerificationLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateEmailVerificationLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Bağlantı oluşturulduktan sonra özel doğrulama e-postasına eklenebilir ve özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-postayla gönderilebilir.
Varsayılan e-posta doğrulama açılış sayfasını kullanmıyor ve kendi özel işleyicinizi oluşturuyorsanız özel e-posta işlemi işleyicileri oluşturma başlıklı makaleyi inceleyin.
Oturum açmak için e-posta bağlantısı oluşturma
Kullanıcıların kimliklerini e-posta bağlantısıyla oturum açma özelliğiyle doğrulayabilmeniz için Firebase projenizde e-posta bağlantısıyla oturum açma özelliğini etkinleştirmeniz gerekir.
Oturum açma bağlantısı oluşturmak için kullanıcının e-posta adresini ve bir ActionCodeSettings
nesnesini sağlayın. Bu durumda, bağlantı tıklanıp oturum açma işlemi tamamlandıktan sonra kullanıcının nereye yönlendirileceği hakkında bilgi sağlamak için ActionCodeSettings
nesnesi gereklidir. İşlem, e-posta işlem bağlantısıyla çözümlenir.
Şifre sıfırlama ve e-posta doğrulama işlemlerinden farklı olarak, bu işlem e-posta bağlantısı üzerinden yeni kullanıcıları uygulamanıza kaydetmek için kullanılabildiğinden kullanılan e-postanın mevcut bir kullanıcıya ait olması gerekmez.
Node.js
// Admin SDK API to generate the sign in with email link.
const useremail = 'user@example.com';
getAuth()
.generateSignInWithEmailLink(useremail, actionCodeSettings)
.then((link) => {
// Construct sign-in with email link template, embed the link and
// send using custom SMTP server.
return sendSignInEmail(useremail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generateSignInWithEmailLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
Go
email := "user@example.com"
link, err := client.EmailSignInLink(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct sign-in with email link template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateSignInWithEmailLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Bağlantı oluşturulduktan sonra özel oturum açma e-postasına eklenebilir ve özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-postayla gönderilebilir.
E-posta bağlantılarını kullanarak Firebase ile kullanıcı kimliklerini doğrulama hakkında daha fazla bilgi edinin. Bu, kullanıcı bağlantıyı tıkladıktan ve uygulamaya geri yönlendirildikten sonra oturum açma işlemini nasıl tamamlayacağı hakkında bilgi verilmesine yardımcı olur.