Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

E-posta İşlem Bağlantıları Oluşturma

Mobil uygulamaların bazen kullanıcılarla etkileşim kurması ve e-posta göndererek belirli işlemleri yapmalarını istemesi gerekir.

Firebase Yönetici SDK'ları , kullanıcılara şifre sıfırlamaları, e-posta adresi doğrulaması ve e-posta tabanlı oturum açma için kullanabilecekleri bağlantıları içeren e-postalar gönderme olanağı sağlar. Bu e-postalar Google tarafından gönderilir ve özelleştirilebilirliği sınırlıdır.

Bunun yerine kendi e-posta şablonlarınızı ve kendi e-posta dağıtım hizmetinizi kullanmak istiyorsanız, kullanıcılarınıza e-postalara ekleyebileceğiniz yukarıdaki akışlar için programlı olarak eylem bağlantıları oluşturmak üzere Firebase Yönetici SDK'sını kullanabilirsiniz.

Bu, aşağıdaki avantajlarla birlikte gelir:

  • E-posta şablonlarını özelleştirin. Bu, yeni stiller ve özel marka ekleme, ifadeleri ve logoları değiştirme, kullanıcılara tam ad yerine adla hitap etme vb.
  • Bağlama göre farklı şablonlar uygulayın. Örneğin, kullanıcı bir bültene abone olmak için e-postasını doğrulıyorsa, içeriğin e-posta içeriğinde sağlanması gerekebilir. Başka bir örnek, e-posta bağlantısı oturum açma işlemidir: bir senaryoda bu aynı kullanıcı tarafından veya başka bir kullanıcı tarafından davet olarak tetiklenebilir. Bağlamın e-postaya eklenmesi gerekir.
  • Özelleştirilmiş e-posta şablonlarını yerelleştirin.
  • Güvenli bir sunucu ortamından bağlantı oluşturabilme.
  • Bir mobil uygulama veya tarayıcı aracılığıyla bağlantının nasıl açılacağını ve ek durum bilgilerinin nasıl aktarılacağını vb.
  • E-posta eylem bağlantısını oluştururken mobil uygulama akışları için kullanılan dinamik bağlantı alanını özelleştirebilme ve hatta bağlama veya mobil uygulamaya bağlı olarak farklı bir dinamik bağlantı alanı belirleyebilme.

ActionCodeSettings'i başlat

Bir e-posta eylem bağlantısı oluşturmadan önce, bir ActionCodeSettings örneğini başlatmanız gerekebilir.

ActionCodeSettings , kullanıcı e-posta bağlantısını tıkladıktan sonra erişilebilen bir devam URL'si yoluyla ek durum ActionCodeSettings olanak tanır. Bu aynı zamanda kullanıcıya eylem tamamlandıktan sonra uygulamaya geri dönme yeteneği sağlar. Ayrıca, e-posta işlem bağlantısının yüklendiğinde doğrudan bir mobil uygulamadan mı yoksa bir tarayıcıdan mı işleneceğini belirleyebilirsiniz.

Bir mobil uygulama aracılığıyla açılması amaçlanan bağlantılar için Firebase Dinamik Bağlantılarını etkinleştirmeniz ve bu bağlantıları mobil uygulamanızdan algılamak için bazı görevler gerçekleştirmeniz gerekir. E-posta eylemleri için Firebase Dinamik Bağlantılarını yapılandırma hakkındaki talimatlara bakın.

Bir ActionCodeSettings örneğini başlatmak için aşağıdaki verileri sağlayın:

Parametre tip Açıklama
url sicim

Farklı bağlamlarda farklı anlamları olan bağlantıyı (eyalet / devam URL'si) ayarlar:

  • Bağlantı, web eylem 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.
iOS ({bundleId: string} | tanımsız) İOS paket kimliğini ayarlar. Bu, yüklüyse bağlantıyı bir iOS uygulamasında açmaya çalışır. İOS uygulamasının Konsolda kayıtlı olması gerekir.
android ({packageName: string, installApp: boolean | undefined, minimumVersion: string | undefined} | undefined) Android paketinin adını ayarlar. Bu, yüklüyse bağlantıyı bir android uygulamasında açmaya çalışacaktır. installApp iletilirse, cihaz destekliyorsa ve uygulama henüz yüklenmemişse Android uygulamasının yüklenip yüklenmeyeceğini belirler. Bu alan bir packageName olmadan packageName , packageName bu alanla birlikte sağlanması gerektiğini açıklayan bir hata atılır. minimumVersion belirtilirse ve uygulamanın eski bir sürümü yüklüyse, kullanıcı uygulamayı yükseltmek için Play Store'a götürülür. Android uygulamasının Konsolda kayıtlı olması gerekir.
handleCodeInApp (Boolean | tanımsız) E-posta işlemi bağlantısının önce bir mobil uygulamada mı yoksa web bağlantısında mı açılacağı. Varsayılan, false değeridir. True değerine ayarlandığında, eylem kodu bağlantısı Evrensel Bağlantı veya Android Uygulama Bağlantısı olarak gönderilir ve yüklendiyse uygulama tarafından açılır. Yanlış durumda, kod önce web widget'ına gönderilir ve ardından devam edildiğinde uygulamaya yönlendirilir.
dynamicLinkDomain (Dize | tanımsız) Firebase Dinamik Bağlantıları kullanılarak açılacaksa, geçerli bağlantı için kullanılacak dinamik bağlantı etki alanını (veya alt etki alanını) ayarlar. Proje başına birden çok dinamik bağlantı alanı yapılandırılabildiğinden, bu alan açıkça bir tane seçebilmenizi sağlar. Hiçbiri belirtilmezse, varsayılan olarak en eski etki alanı kullanılır.

Aşağıdaki örnek, mobil uygulamada önce Firebase Dinamik Bağlantısı olarak (iOS uygulaması com.example.ios veya Android uygulaması com.example.android yüklenmemişse uygulamanın yükleneceği bir e-posta doğrulama bağlantısının nasıl gönderileceğini ve minimum sürüm 12). Derin bağlantı, https://www.example.com/checkout?cartId=1234 URL'sini devam ettir yükünü içerecektir. Kullanılan dinamik bağlantı etki alanı, coolapp.page.link Dinamik Bağlantıları ile kullanılmak üzere yapılandırılması gereken coolapp.page.link .

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'
  },
  // FDL custom domain.
  dynamicLinkDomain: 'coolapp.page.link'
};
 

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();
 

piton

 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',
)
 

Git

 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 edinmek için E-posta İşlemlerinde Durumu Geçme konusuna bakın.

Parola sıfırlama bağlantısı oluşturmak için mevcut kullanıcının e-postasını ve isteğe bağlı bir ActionCodeSettings nesnesi ActionCodeSettings . İşlem, e-posta işlemi bağlantısıyla çözülecektir. Kullanılan e-posta 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';
admin.auth().generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, 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());
}
 

piton

 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)
 

Git

 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 parola sıfırlama e-postasına eklenebilir ve daha sonra özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-posta ile gönderilebilir.

Varsayılan şifre sıfırlama açılış sayfasını kullanmıyorsanız ve kendi özel işleyicinizi oluşturmuyorsanız, özel e-posta işlemi işleyicileri oluşturma konusuna bakın.

Bir e-posta doğrulama bağlantısı oluşturmak için mevcut kullanıcının doğrulanmamış e-postasını ve isteğe bağlı bir ActionCodeSettings nesnesi ActionCodeSettings . İşlem, e-posta işlemi bağlantısıyla çözülecektir. Kullanılan e-posta mevcut bir kullanıcıya ait olmalıdır.

node.js

 // Admin SDK API to generate the password reset link.
const email = 'user@example.com';
admin.auth().generatePasswordResetLink(email, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
admin.auth().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());
}
 

piton

 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)
 

Git

 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 daha sonra ö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ıyorsanız ve kendi özel işleyicinizi oluşturmuyorsanız, özel e-posta işlemi işleyicileri oluşturma konusuna bakın.

E- posta bağlantısı oturum açmasıyla kullanıcıların kimliğini doğrulayabilmeniz için, Firebase projeniz için e-posta bağlantısı oturum açmasını etkinleştirmeniz gerekir.

Oturum açma bağlantısı oluşturmak için kullanıcının e-postasını ve bir ActionCodeSettings nesnesi ActionCodeSettings . ActionCodeSettings nesnesi, bu durumda, ActionCodeSettings tamamlanması için bağlantı tıklatıldıktan sonra kullanıcının nereye döndürüleceği hakkında bilgi sağlamak için gereklidir. İşlem, e-posta işlemi bağlantısıyla çözülecektir.

Parola sıfırlama ve e-posta doğrulamasından farklı olarak, kullanılan e-postanın mevcut bir kullanıcıya ait olması gerekmez, çünkü bu işlem e-posta bağlantısı yoluyla uygulamanıza yeni kullanıcılar kaydetmek için kullanılabilir.

node.js

 // Admin SDK API to generate the sign in with email link.
const usremail = 'user@example.com';
admin.auth().generateSignInWithEmailLink(usremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(usremail, 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());
}
 

piton

 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)
 

Git

 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 daha sonra özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-posta ile gönderilebilir.

E-posta bağlantılarını kullanarak Firebase ile kullanıcıların kimlik doğrulaması hakkında daha fazla bilgi edinin. Bu, kullanıcı bağlantıyı tıkladıktan ve tekrar uygulamaya yönlendirildikten sonra oturum açmanın nasıl tamamlanacağı hakkında bilgi sağlanmasına yardımcı olur.