Google 致力于为黑人社区推动种族平等。查看具体举措

E-posta Eylem Bağlantıları Oluşturma

Mobil uygulamaların bazen kullanıcılarla etkileşime girmesi ve e-posta göndererek belirli eylemleri gerçekleştirmelerini istemesi gerekir.

Firebase Yönetici SDK'leri onlar şifre sıfırlar, e-posta adresi doğrulama ve için kullanabileceğiniz bağlantıları içeren kullanıcıların e-postalar göndermek için yeteneği sağlayan oturum açma e-posta tabanlı. Bu e-postalar Google tarafından gönderilir ve sınırlı özelleştirilebilirliğe sahiptir.

Bunun yerine kendi e-posta şablonlarınızı ve kendi e-posta dağıtım hizmetinizi kullanmak istiyorsanız, kullanıcılarınıza göndereceğiniz e-postalara ekleyebileceğiniz yukarıdaki akışlar için eylem bağlantılarını programlı bir şekilde oluşturmak için Firebase Admin 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 adlarıyla hitap etme vb.
  • Bağlama bağlı olarak farklı şablonlar uygulayın. Örneğin, kullanıcı bir haber bültenine abone olmak için e-postasını doğruluyorsa, e-posta içeriğinde bağlamın sağlanması gerekebilir. Başka bir örnek, e-posta bağlantısı oturum açmadır: bir senaryoda bu, aynı kullanıcı tarafından veya başka bir kullanıcı tarafından davet olarak tetiklenebilir. İçeriğin e-postaya dahil edilmesi gerekir.
  • Özelleştirilmiş e-posta şablonlarını yerelleştirin.
  • Bağlantıyı güvenli bir sunucu ortamından 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 iletileceğini vb. özelleştirme yeteneği.
  • E-posta eylemi bağlantısını oluştururken mobil uygulama akışları için kullanılan dinamik bağlantı alanını özelleştirme ve hatta bağlama veya mobil uygulamaya bağlı olarak farklı bir dinamik bağlantı alanı belirtme yeteneği.

ActionCodeSettings'i Başlat

Bir e-posta eylem bağlantı oluşturmak için, önce bir başlatmak gerekebilir ActionCodeSettings örneği.

ActionCodeSettings bir kullanıcı e-posta bağlantıyı tıkladıktan sonra erişilebilir URL'yi devam aracılığıyla ek durumunu geçmesine izin verir. Bu aynı zamanda kullanıcıya işlem tamamlandıktan sonra uygulamaya geri dönme olanağı sağlar. Ayrıca, e-posta eylemi bağlantısının yüklendiğinde doğrudan bir mobil uygulamadan mı yoksa bir tarayıcıdan mı ele alınacağını belirtebilirsiniz.

Bir mobil uygulama aracılığıyla açılması amaçlanan bağlantılar için, Firebase Dynamic Links'i etkinleştirmeniz ve bu bağlantıları mobil uygulamanızdan algılamak için bazı görevleri gerçekleştirmeniz gerekir. İlgili talimatlar bakın Firebase Dinamik Linkler yapılandırmak eposta eylemler için.

Bir başlatmak için ActionCodeSettings örneği, aşağıdaki verileri sağlar:

Parametre Tip Açıklama
url sicim

Farklı bağlamlarda farklı anlamlara sahip olan bağlantıyı (dur/dur URL'sini) ayarlar:

  • Bağlantısı, web eylem widget ele edildiğinde, bu derin link continueUrl sorgu parametresi.
  • Bağlantı doğrudan uygulamanın içinden ele alındığında, bu continueUrl Dynamic Link derin linkte sorgu parametresi.
iOS ({bundleId: string}|tanımsız) iOS paket kimliğini ayarlar. Bu, yüklüyse, bağlantıyı bir iOS uygulamasında açmaya çalışacaktır. iOS uygulamasının Konsola kaydedilmesi gerekir.
android ({packageName: string, installApp:boolean|tanımsız, minimumVersion: string|tanımsız}|tanımsız) Android paket adını ayarlar. Bu, yüklüyse bağlantıyı bir android uygulamasında açmaya çalışacaktır. Eğer installApp geçirilir, bu cihaz destekliyorsa ve uygulaması zaten yüklü değilse Android uygulamasını yüklemek belirtir. Bu alan, bir olmadan sağlanıyorsa packageName bir hata olduğunu açıklayan atılır packageName bu alanda birlikte sağlanmalıdır. Eğer minimumVersion belirtilirse ve uygulamanın eski bir sürümü yüklüyse, kullanıcının uygulamayı yükseltmek için Play Store'a alınır. Android uygulamasının Konsola kaydedilmesi gerekir.
handleCodeInApp (boolean|tanımsız) E-posta eylemi 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. True olarak ayarlandığında, eylem kodu bağlantısı Evrensel Bağlantı veya Android Uygulama Bağlantısı olarak gönderilir ve kuruluysa uygulama tarafından açılır. Yanlış durumda, kod önce web widget'ına gönderilir ve ardından devam edildiğinde, yüklüyse uygulamaya yönlendirilir.
dynamicLinkDomain (dize|tanımsız) Firebase Dynamic Links 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ılabileceğinden, bu alan açıkça birini seçme olanağı sağlar. Hiçbiri sağlanmazsa, varsayılan olarak en eski alan kullanılır.

Aşağıdaki örnek, bir Firebase dinamik bağlantı (iOS uygulaması olarak ilk mobil uygulama olarak açılacak bir e-posta doğrulama bağlantısını nasıl gönderileceği göstermektedir com.example.ios veya Android uygulaması com.example.android zaten yüklü değilse uygulama kuracak ve minimum sürüm 12'dir). Derin bağlantı URL yükü devam içerecektir https://www.example.com/checkout?cartId=1234 . Kullanılan dinamik bağlantı etki alanıdır coolapp.page.link Firebase Dinamik bağlantılar ile kullanmak için yapılandırılmalıdır ki.

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

Gitmek

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 bkz Eposta Eylemler Devleti Geçme .

Bir şifre sıfırlama bağlantısı oluşturmak için varolan kullanıcının e-postalarını ve isteğe bağlı temin ActionCodeSettings nesneyi. İşlem, e-posta eylemi 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';
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());
}

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)

Gitmek

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 ardından özel bir SMTP sunucusu kullanılarak ilgili kullanıcıya e-postayla gönderilebilir.

Varsayılan parola sıfırlama açılış sayfasını kullanarak ve kendi özel işleyicisi bina değilseniz, bkz özel e-posta eylem işleyicileri oluşturmak .

Email doğrulama bağlantısını oluşturmak için varolan kullanıcının doğrulanmamış e-posta ve opsiyonel sağlayan ActionCodeSettings nesneyi. İşlem, e-posta eylemi 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 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());
}

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)

Gitmek

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

Eğer varsayılan e-posta doğrulama açılış sayfasını kullanarak ve kendi özel işleyicisi bina değilseniz, bkz özel e-posta eylem işleyicileri oluşturmak .

Eğer e-posta bağlantısı oturum açma kullanıcıların kimliğini doğrulayabilir önce gerekecektir e-posta bağlantısı oturumu etkinleştirebilirsiniz sizin Firebase proje için.

Bir oturum açma bağlantısını oluşturmak için, kullanıcının e-postalarını sağlamak ve bir ActionCodeSettings nesnesi. ActionCodeSettings nesne bağlantı oturum açma tamamlanması için tıklandıktan sonra kullanıcıya geri dönmek için nerede hakkında bilgi vermek için bu durumda gereklidir. İşlem, e-posta eylemi bağlantısıyla çözülecektir.

Parola sıfırlama ve e-posta doğrulamasının aksine, kullanılan e-postanın mutlaka mevcut bir kullanıcıya ait olması gerekmez, çünkü bu işlem e-posta bağlantısı aracılığıyla 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';
getAuth()
  .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)

Gitmek

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-postayla gönderilebilir.

Hakkında daha fazla bilgi e-posta bağlantıları kullanarak Firebase ile kullanıcıların kimliklerini doğrulamaktadır . Bu, kullanıcı bağlantıyı tıkladıktan ve uygulamaya yeniden yönlendirildikten sonra oturum açmanın nasıl tamamlanacağı hakkında bilgi sağlamaya yardımcı olacaktır.