谷歌致力於推進種族平等的黑人社區。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

生成電子郵件操作鏈接

移動應用程序有時需要與用戶進行交互,並促使他們通過發送電子郵件採取某些行動。

在火力地堡管理軟件開發工具包提供發送包含他們可以使用密碼重置,電子郵件地址驗證和鏈接的用戶電子郵件的能力電子郵件為基礎的登錄。這些郵件是由谷歌發送和有限的可定制性。

如果你想,而不是使用自己的電子郵件模板和您自己的電子郵件遞送服務,您可以使用管理員火力地堡的SDK編程生成在上述流量,這可以包括電子郵件給用戶的操作鏈接。

這具有以下優點:

  • 定制電子郵件模板。這包括名字,而不是全名,依此類推,以增加新的款式和定制品牌,改變措辭和標識,地址用戶的能力。
  • 根據上下文應用不同的模板。例如,如果用戶正在核實他們的電子郵件訂閱時事通訊,上下文可能需要在郵件內容中提供。另一個例子是電子郵件中的鏈接登錄:在一個場景中這可能是由同一個用戶作為其他用戶邀請觸發,或。上下文需要被包含在電子郵件中。
  • 本地化定制電子郵件模板。
  • 能夠生成一個安全的服務器環境的鏈接。
  • 能力來定制鏈路如何被打開時,通過移動應用或瀏覽器,以及如何通過附加的狀態信息等。
  • 構建電子郵件操作鏈接時,甚至指定取決於上下文或移動應用程序不同的動態鏈接域能力來定制用於移動應用的動態鏈接域流動。

初始化ActionCodeSettings

在可以生成電子郵件操作鏈接,則可能需要初始化ActionCodeSettings實例。

ActionCodeSettings允許你通過附加的狀態通過繼續URL用戶點擊電子郵件中的鏈接後訪問。這也為用戶提供了完成動作後,返回到應用程序的能力。此外,你可以指定是否當它被安裝或從瀏覽器直接從移動應用程序處理的電子郵件操作鏈接。

對於旨在通過移動應用程序中打開的鏈接,你將需要啟用火力地堡動態鏈接和執行某些任務來檢測來自移動應用這些鏈接。請參閱如何說明配置火力地堡動態鏈接的電子郵件的行動。

初始化一個ActionCodeSettings實例,提供以下數據:

參數類型描述
url

設置鏈接(州/ URL繼續),其中有在不同環境下不同的含義:

  • 當鏈接在網絡操作部件的處理,這是在深層鏈接continueUrl查詢參數。
  • 當鏈路在應用程序直接處理,這是continueUrl動態鏈接的深層鏈接查詢參數。
iOS ({bundleId:字符串} |未定義) 套的iOS包ID。這將嘗試,如果已安裝在iOS應用中打開鏈接。在iOS應用需要在控制台中註冊。
android ({的packageName:串,installApp:布爾|未定義,minimumVersion:串|未定義} |未定義) 設置Android包名稱。這將嘗試,如果已安裝Android應用中打開鏈接。如果installApp獲得通過,指定是否如果設備支持和應用程序尚未安裝安裝Android應用程序。如果該字段沒有提供packageName ,被拋出的錯誤解釋,所述packageName必須結合該字段來提供。如果minimumVersion指定,並安裝應用程序的舊版本中,用戶被引導到Play商店升級的應用程序。 Android的應用程序需要在控制台中註冊。
handleCodeInApp (布爾|未定義) 無論是電子郵件操作鏈接將在移動應用或Web鏈接首次被打開。默認為false。當設置為true,動作代碼鏈接會被作為一個通用的鏈接或Android應用程序的鏈接,如果安裝將由應用打開的。在虛假的情況下,代碼將首先小部件發送到網絡,然後繼續安裝是否會重定向到應用程序。
dynamicLinkDomain (字符串|未定義) 集動態鏈接域(或子域)使用當前鏈接,如果是使用火力地堡動態鏈接被打開。由於多個動態鏈接域可以按項目進行配置,這個領域提供了明確選擇一個的能力。如果沒有提供,最古老的域默認情況下使用。

下面的例子說明了如何發送電子郵件驗證鏈接,將在移動應用程序首先打開一個火力地堡動態鏈接(iOS應用com.example.ios或Android應用com.example.android若沒安裝該應用程序將安裝並的最低版本是12)。深層鏈接將包含URL繼續有效載荷https://www.example.com/checkout?cartId=1234 。使用的動態鏈接域是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();
 

蟒蛇

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

 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",
};
 

要了解更多信息,請參閱在電子郵件操作開通狀態

要生成一個密碼重置鏈接,提供了現有用戶的電子郵件和可選ActionCodeSettings對象。該操作將與電子郵件操作鏈接來解決。使用必須屬於現有用戶的電子郵件。

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

蟒蛇

 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)
 

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

生成鏈接後,它可以被插入到自定義密碼重置電子郵件,然後通過電子郵件發送給使用定制的SMTP服務器對應的用戶。

如果你不使用默認密碼重置登錄頁面,並構建自己的自定義處理程序,請參見創建自定義的電子郵件操作處理程序

生成電子郵件驗證鏈接,提供了現有用戶的未經驗證的電子郵件和可選ActionCodeSettings對象。該操作將與電子郵件操作鏈接來解決。使用必須屬於現有用戶的電子郵件。

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

蟒蛇

 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)
 

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

生成鏈接後,它可以被插入到定制驗證電子郵件,然後使用定制的SMTP服務器通過電子郵件發送給相應的用戶。

如果你不使用默認的電子郵件驗證登錄頁面,並構建自己的自定義處理程序,請參見創建自定義的電子郵件操作處理程序

之前,你可以驗證的電子郵件鏈接登錄的用戶,您將需要啟用電子郵件鏈接登錄您的火力地堡項目。

要生成登錄鏈接,提供用戶的電子郵件和ActionCodeSettings對象。該ActionCodeSettings對象在這種情況下,需要提供上點擊了登錄完成鏈接後,其中返回的用戶信息。該操作將與電子郵件操作鏈接來解決。

與密碼重置和電子郵件驗證,所使用的電子郵件並不一定需要屬於現有的用戶,因為這樣的操作可以通過電子郵件的鏈接可用於註冊新用戶到你的應用程序。

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

蟒蛇

 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)
 

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

生成鏈接後,它可以被插入到定制登錄電子郵件,然後通過電子郵件發送給使用定制的SMTP服務器對應的用戶。

了解更多關於使用電子郵件中的鏈接驗證用戶的身份火力地堡 。這將有助於提供關於如何完成註冊的用戶點擊該鏈接並重定向回應用程序之後。