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

Mobil uygulamaların bazen kullanıcılarla etkileşimde bulunması e-posta göndererek belirli işlemleri yapmalarını isteyebilirsiniz.

Firebase İstemci SDK'ları kullanıcılara, arama sorgularını içeren e-postalar gönderme şifre sıfırlama, e-posta adresi doğrulama ve e-posta ile oturum açma. Bu şablon tabanlı e-postalar Google tarafından gönderilir ve sınırlı özelleştirme

Bunun yerine kendi e-posta şablonlarınızı ve kendi e-posta tesliminizi kullanmak isterseniz hizmeti kullanıyorsanız, bu sayfada Firebase Admin SDK'nın yukarıdaki akışlara ilişkin işlem bağlantılarını programlı bir şekilde dahil edebileceğiniz bazı değerlilerdir.

Bunun aşağıdaki avantajları vardır:

  • E-posta şablonlarını özelleştirin. Yeni stiller ekleme ve bu öğeleri özel markalama, ifadeleri ve logoları değiştirme, kullanıcılara ad ile hitap etme tam ad, vb.
  • Bağlama göre farklı şablonlar uygulayabilirsiniz. Örneğin, kullanıcı bültene abone olmak için e-posta adreslerini doğrularsa bağlamın iletişim kurulabilir. Başka bir örnek de e-posta bağlantısıyla oturum açmadır: tek bir hesapta senaryoda, bu durum aynı kullanıcı tarafından veya başka bir kullanıcının davetiyle tetiklenebilir. belirtir. 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 özelliği.
  • Mobil uygulama veya tarayıcı üzerinden bağlantının açılma şeklini özelleştirebilme tarayıcı ve ek durum bilgilerinin nasıl iletileceği vb.
  • Aşağıdaki durumlarda mobil uygulama akışları için kullanılan dinamik bağlantı alan adını özelleştirebilme oluşturma ve hatta farklı bir dinamik bağlantı belirtme veya mobil uygulamaya göre değişir.

ActionCodeSettings'i başlatma

Bir e-posta işlem bağlantısı oluşturmadan önce bir ActionCodeSettings örneği.

ActionCodeSettings, bir devam URL'si aracılığıyla ek durum iletmenize olanak tanır. Kullanıcı e-posta bağlantısını tıkladıktan sonra erişilebilir. Bu, kullanıcı için aynı zamanda işlem tamamlandıktan sonra uygulamaya geri dönebilme olanağı. Ayrıca, e-posta işlem bağlantısının doğrudan bir mobil cihazdan işlenip işlenmeyeceğini belirtebilirsiniz veya tarayıcıdan yüklenen bir uygulamayı çağırın.

Mobil uygulama üzerinden açılması amaçlanan bağlantılar için Firebase Dynamic Links'e gidin ve bu bağlantıları mobil uygulama. Nasıl yapıldığını Firebase Dynamic Links'i yapılandırın kontrol edebilirsiniz.

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

Parametre Tür Açıklama
url dize

Farklı anlamları olan bağlantıyı (durum/devam URL'si) ayarlar farklı bağlamlarda görebilirsiniz:

  • Bağlantı, web işlemi widget'larında işlendiğinde bağlantısını tıklayın.continueUrl
  • Bağlantı doğrudan uygulamada işlendiğinde continueUrl sorgu parametresi, Dinamik Bağlantı.
iOS ({bundleId: string}|tanımsız) Paket kimliğini ayarlar. Bu işlem, aşağıdaki durumlarda bağlantıyı bir Apple uygulamasında açmaya çalışır: yüklü olmalıdır. Uygulamanın Console'a kayıtlı olması gerekir.
android ({packageName: string, installApp:boole|undefined, minimumVersion: dize|tanımsız}|tanımsız) Android paketi adını ayarlar. Bu işlem, bağlantıyı Android uygulaması yüklüyse. installApp geçilirse Android uygulamasının desteklenmesi durumunda Android uygulamasının yüklenip yüklenmeyeceğini belirtir Uygulama yüklü değil. Bu alan bir olmadan sağlanırsa packageName, packageName bu alanla bağlantılı olarak sağlanmalıdır. minimumVersion belirtilmişse ve yüklendikten sonra, kullanıcı uygulamayı yeni sürüme geçirmek üzere Play Store'a yönlendirilir. Android uygulamasının Console'da kayıtlı olması gerekir.
handleCodeInApp (boole|tanımsız) E-posta işlemi bağlantısının mobil uygulamada mı yoksa web'de mi açılacağı bağlantısını tıklayın. Varsayılan değer, false (yanlış) değeridir. 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önderilecek ve uygulama tarafından geri yüklenir. Yanlış durumda kod, web widget'ı, ardından Devam'da yüklendi.
dynamicLinkDomain (dize|tanımsız) Geçerli bağlantı için kullanılacak dinamik bağlantı alan adını (veya alt alan adını) ayarlar Firebase Dynamic Links kullanılarak açılacaksa. Çoklu dinamik bağlantı alanları proje başına yapılandırılabilir. Bu alan, birini seçme olanağınız vardır. Herhangi bir alan sağlanmazsa en eski alan adı varsayılan olarak kullanılır.

Aşağıdaki örnekte, bir e-posta doğrulama bağlantısının önce bir mobil uygulamada Firebase Dynamic Link (Apple com.example.ios veya com.example.android Android uygulaması (yüklü değilse ve minimum sürüm 12 ise) yükle). Derin bağlantı devam URL yükünü içerir https://www.example.com/checkout?cartId=1234 Kullanılan dinamik bağlantı alan adı: coolapp.page.link (Firebase Dynamic ile kullanım için yapılandırılması gerekir) Bağlantılar.

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

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 edinmek için bkz. E-posta İşlemlerinde İletim Durumu.

Şifre sıfırlama bağlantısı oluşturmak için mevcut kullanıcının e-posta adresini ve isteğe bağlı ActionCodeSettings nesnesi. İşlem, e-posta ile çözülecek işlem bağlantısı. 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 bölümüne eklenebilir. ve ardından özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-postayla gönderilir.

Varsayılan şifre sıfırlama açılış sayfasını kullanmıyorsanız ve kendi özel işleyicisi hakkında özel e-posta işlem işleyiciler oluşturmak

E-posta doğrulama bağlantısı oluşturmak için mevcut kullanıcının doğrulanmamış email ve isteğe bağlı ActionCodeSettings nesnesi içerir. İşlem çözümlenecek e-posta işlem bağlantısı. 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ğrulamaya eklenebilir. ve ardından özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-postayla gönderilir.

Varsayılan e-posta doğrulaması açılış sayfasını kullanmıyorsanız ve için kendi özel işleyicinizi özel e-posta işlem işleyiciler oluşturmak

E-posta bağlantısıyla oturum açarak kullanıcıların kimliğini doğrulayabilmeniz için öncelikle e-posta bağlantısı ile oturum açmayı etkinleştirme .

Oturum açma bağlantısı oluşturmak için kullanıcının e-posta adresini ve ActionCodeSettings adresini sağlayın nesnesini tanımlayın. Bu durumda, ActionCodeSettings nesnesi gerekir Oturum açmak için bağlantı tıklandıktan sonra kullanıcının nereye iade edileceğine ilişkin bilgiler teşekkür etmenin de önemli bir yoludur. Bu işlem, e-posta işlem bağlantısıyla çözülecektir.

Şifre sıfırlama ve e-posta doğrulamasından farklı olarak, kullanılan e-posta mevcut bir kullanıcıya ait olması gerekir çünkü bu işlem şu amaçlarla kullanılabilir: e-posta bağlantısı yoluyla uygulamanıza yeni kullanıcılar kaydedebilirsiniz.

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 ardından özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-posta ile gönderilmiştir.

Daha fazla bilgi: E-posta bağlantılarıyla Firebase ile kullanıcıların kimliğini doğrulama. Bu, kullanıcı sonrasında oturum açma işlemini nasıl tamamlanacağı hakkında bilgi sağlamaya yardımcı olur bağlantıyı tıkladığında tekrar uygulamaya yönlendirilir.