日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

身份驗證模板最佳實踐

本文帶您了解WhatsApp新的身份驗證模板。

背景信息

自2023年5月1日起,WhatsApp推出了包含一次性密碼按鈕的身份驗證模板(Authentication),自2023年5月29日起,所有新建的身份驗證模板都必須包含一次性密碼按鈕。更多關于身份驗證模板的信息請參見WhatsApp模板類型說明

身份驗證模板

模板組成

包含一次性密碼按鈕的身份驗證模板由以下部分組成:

  • 身份驗證模板的預設固定文本:

    • <VERIFICATION_CODE> 是您的驗證碼。

    • 安全免責聲明(可選):為安全起見,請勿共享該驗證碼。

    • 過期警告(可選):這組驗證碼將在<NUM_MINUTES>分鐘后過期。

  • 按鈕:復制驗證碼按鈕(Copy code)或一鍵自動填寫按鈕(Autofill)。

示例圖:

身份驗證模板OTP.png

模板規則限制

  • 包含一次性密碼按鈕的身份驗證模板僅由預設文本和按鈕組成。

  • 身份驗證模板的內容或參數不允許使用網址、媒體(圖片、音頻、視頻、文件等)和表情符號。

  • 身份驗證模板使用參數最多支持15 個字符,即驗證碼最大長度為15位。

按鈕

身份驗證模板必須包含復制驗證碼按鈕(Copy code)或一鍵自動填寫按鈕(Autofill)。當用戶點擊按鈕時,不同按鈕的工作方式不同:

  • 復制驗證碼按鈕:會將一次性密碼或驗證碼復制到用戶的剪貼板。然后,用戶可以手動切換到您的應用,將一次性密碼或驗證碼粘貼到應用界面。

  • 一鍵自動填寫按鈕:會自動加載您的應用,并向該應用傳遞一次性密碼或驗證碼。

一鍵自動填寫按鈕可提供最佳用戶體驗,所以是首選的解決方案。但是,目前僅安卓系統手機(Android)支持一鍵自動填寫按鈕,并且此類按鈕需要更改您應用的代碼,才能執行“握手”,另外還需要更改應用的簽名密鑰哈希值。請參閱下方握手應用簽名密鑰哈希值部分。

最佳實踐

  • 在發送一次性密碼或驗證碼前,先確認用戶的WhatsApp電話號碼,再向該號碼發送一次性密碼或驗證碼。

  • 明確告知用戶,一次性密碼或驗證碼將發送至他們的WhatsApp電話號碼,尤其是當您為用戶提供多種方式來接收一次性密碼或驗證碼時。

  • 當用戶將一次性密碼或驗證碼粘貼到您的應用中時,或應用在一鍵自動填寫按鈕流程中收到一次性密碼或驗證碼時,請明確告知用戶應用已獲取一次性密碼或驗證碼。

參數說明

參數名

描述

示例值

COMPONENTS

該數組包含描述模板內容和元數據的單個對象。

-

LANGUAGE

模板的語言代碼

en_US

NAME

模板的名稱。

僅支持小寫字母、下劃線、數字。

名稱長度不超過60個字符。

verification_code

WHATSAPP_BUSINESS_ACCOUNT_ID

要與模板關聯的WABA ID。

106***********06

ADD_SECURITY_RECOMMENDATION

可選。

布爾值。

如需在模板中加入以下字符串,請將此占位符設為true:為安全起見,請勿共享該驗證碼。

否則,請設為false。

說明

字符串內容為固定內容。

true

CODE_EXPIRATION_MINUTES

可選。

整數。

表示一次性密碼或驗證碼的有效期(以分鐘為單位)。

如果忽略此占位符,則發送的消息不會顯示一次性密碼或驗證碼的過期警告。

最小值為1,最大值為90。

5

COPY_CODE_BUTTON_TEXT

字符串。

復制驗證碼按鈕的文本。

重要

即使模板使用一鍵自動填寫按鈕,您仍須提供此值。如果我們無法驗證您的握手,身份驗證模板消息會顯示一個包含此文本的復制驗證碼按鈕。

不超過 25 個字符。

Copy Code

ONE_TAP_BUTTON_TEXT

僅適用于一鍵自動填寫按鈕。

字符串。

一鍵自動填寫按鈕的文本。

不超過 25 個字符。

Autofill

OTP_TYPE

枚舉。

表示按鈕類型。

如需讓模板使用復制驗證碼按鈕,請將此占位符設為 COPY_CODE;

如需讓模板使用一鍵自動填寫按鈕,則設為 ONE_TAP。

請參閱上方按鈕部分。

ONE_TAP

PACKAGE_NAME

Android應用的應用包名。

com.example.myapplication

SIGNATURE_HASH

應用簽名密鑰哈希值。

請參閱下方應用簽名密鑰哈希值

K8a%2FAINcGX7

應用簽名密鑰哈希值

如要創建使用一鍵自動填寫按鈕的身份驗證模板,您必須在components數組中加入應用簽名密鑰哈希值。

如要計算您的哈希值,請遵循Google有關計算應用的哈希字符串的說明。

或者,如果您按照Google說明下載了應用簽名密鑰證書,您可以結合使用該證書和sms_retriever_hash_v9.sh shell腳本來計算哈希值。

握手

如果您應用中的用戶請求獲取一次性密碼或驗證碼,并選擇將其發送到他們的WhatsApp電話號碼,您首先應執行“握手”,然后調用我們的API來發送身份驗證模板消息。在收到該消息后,WhatsApp應用將執行資格檢查。如果沒有錯誤,WhatsApp將啟動意圖并向用戶顯示該消息。最后,當用戶點擊該消息的一鍵自動填寫按鈕時,WhatsApp應用會自動加載您的應用并向傳遞一次性密碼或驗證碼。

說明

如果您在發送消息之前不執行“握手”,或消息未通過資格檢查,則發送的消息將顯示復制驗證碼按鈕(Copy code),而不是一鍵自動填寫按鈕(Autofill)。

資格檢查

在收到身份驗證模板消息之后,WhatsApp應用會執行以下檢查。如果任意檢查失敗,一鍵自動填寫按鈕將被替換為復制驗證碼按鈕。

  • “握手”是在發送消息前的10分鐘內發起。

  • 消息中的應用包名(創建模板時在components數組的package_name屬性中定義)與意圖上設置的應用包名匹配。WhatsApp應用將使用您的應用程序提供的PendingIntent對象中調用的getCreatorPackage方法判斷項目包名稱是否匹配。

  • 消息中的應用簽名密鑰哈希值(創建模板時在components數組的signature_hash屬性中定義)與您所安裝應用的簽名密鑰哈希值匹配。

  • 消息包含一鍵自動填寫按鈕的文本。

  • 您的應用已定義用于接收一次性密碼或驗證碼的活動。請參閱下方活動(Activity)部分。

Android通知

僅在以下情況下,表示已收到WhatsApp身份驗證模板消息的Android通知才會顯示在用戶的Android設備上:

  • 用戶使用所發送消息的接收電話號碼(賬戶)登錄WhatsApp應用。

  • 用戶登錄您的應用。

  • Android操作系統是 KitKat(Android 4.4,API 19)或更高版本。

  • WhatsApp應用已啟用顯示通知(設置>通知)。

  • 已為WhatsApp應用啟用設備層級通知。

  • 在WhatsApp應用中,用戶與您的企業之間過去的消息對話未設為靜音。

客戶端實現

在您的應用中實現以下活動(activity)和類(class)。

活動(Activity)

聲明可接收一次性密碼或驗證碼的活動和意圖篩選條件。意圖篩選條件必須具有操作名稱 com.whatsapp.otp.OTP_RETRIEVED。

在收到身份驗證模板消息(且該消息已通過所有資格檢查)后,WhatsApp應用將立即開始執行此活動。

公共類(Public Class)

定義在一次性密碼或驗證碼傳遞到您的應用后,可接受該一次性密碼或驗證碼的活動公共類。

發起“握手”

以下示例展示了使用WhatsApp應用發起“握手”的一種方法。

public void sendOtpIntentToWhatsApp() {
   // Send OTP_REQUESTED intent to both WA and WA Business App
   sendOtpIntentToWhatsApp("com.whatsapp");
   sendOtpIntentToWhatsApp("com.whatsapp.w4b");
}

private void sendOtpIntentToWhatsApp(String packageName) {

  /**
  * Starting with Build.VERSION_CODES.S, it will be required to explicitly 
  * specify the mutability of  PendingIntents on creation with either 
  * (@link #FLAG_IMMUTABLE} or FLAG_MUTABLE
  */
  int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? FLAG_IMMUTABLE : 0;
  PendingIntent pi = PendingIntent.getActivity(
      getApplicationContext(), 
      0, 
      new Intent(), 
      flags);


  // Send OTP_REQUESTED intent to WhatsApp
  Intent intentToWhatsApp = new Intent();
  intentToWhatsApp.setPackage(packageName);
  intentToWhatsApp.setAction("com.whatsapp.otp.OTP_REQUESTED");
  // WA will use this to verify the identity of the caller app.
  Bundle extras = intentToWhatsApp.getExtras();
  if (extras == null) {
     extras = new Bundle();
  }
  extras.putParcelable("_ci_", pi);
  intentToWhatsApp.putExtras(extras);
  getApplicationContext().sendBroadcast(intentToWhatsApp);
}

錯誤信號

如果您的消息未通過WhatsApp的任意一項資格檢查,一鍵自動填寫按鈕將被替換為復制驗證碼按鈕。此外,還可能有設備、WhatsApp應用設置阻止消息通知。為幫助調試,WhatsApp應用會通過傳遞com.whatsapp.OTP_ERROR意圖來顯示一些錯誤信息。在這種情況下,您將收到錯誤密鑰和消息,而不是用戶的一次性密碼或驗證碼。

請注意,其中某些錯誤信號只有在Android模擬器中運行WhatsApp應用時才會出現。

描述

incompatible_os_version

Android 版本不兼容。

如果發起“握手”(發送 com.whatsapp.otp.OTP_REQUESTED 意圖),但設備所運行的 Android 版本低于 v19,則會出現此情況。

incorrect_signature_hash

說明

僅限模擬器

簽名哈希不正確。

如果發起“握手”(發送 com.whatsapp.otp.OTP_REQUESTED 意圖),并且WhatsApp應用收到使用一鍵自動填寫按鈕的身份驗證模板消息,而消息中的包名未生成消息的簽名哈希,則會出現此情況。

missing_handshake_or_disorder

缺少“握手”/操作指令。

如果WhatsApp應用收到帶有一鍵自動填寫按鈕的身份驗證模板消息,但未發起“握手”,則會出現此情況。

otp_request_expired

一次性密碼請求過期。

如果使用一鍵自動填寫按鈕的身份驗證模板已送達用戶,但此時距您發起握手已超過 10 分鐘,則會出現此情況。在此情況下,會改為顯示復制驗證碼按鈕。

whatsapp_message_notification_disabled

說明

僅限模擬器

WhatsApp應用中設置了禁用消息通知。

如果發起“握手”(發送 com.whatsapp.otp.OTP_REQUESTED 意圖),但用戶已在WhatsApp應用中禁用通知,則會出現此情況。

whatsapp_notification_disabled

說明

僅限模擬器

已在設備層級禁用WhatsApp通知。

如果發起“握手”(發送 com.whatsapp.otp.OTP_REQUESTED 意圖),但用戶已在WhatsApp(設備層級設置)中禁用應用通知,則會出現此情況。

集成

錯誤信號通過廣播意圖送達,因此必須運行BroadcastReceiver才能收到錯誤信號。

使用 manifest.xml

<receiver
 android:name=".app.otp.OtpErrorReceiver"
 android:enabled="true"
 android:exported="true" >
   <intent-filter>
       <action android:name="com.whatsapp.otp.OTP_ERROR"/>
   </intent-filter>
</receiver>

使用接收器類

<![CDATA[ public class OtpErrorReceiver extends BroadcastReceiver { public static final String OTP_ERROR_KEY = "error"; public static final String OTP_ERROR_MESSAGE_KEY = "error_message"; @Override public void onReceive(Context context, Intent intent) { try { PendingIntent pendingIntent = intent.getParcelableExtra("_ci_"); if (pendingIntent != null) { String packageName = pendingIntent.getCreatorPackage(); if (packageName.equalsIgnoreCase("com.whatsapp") || packageName.equalsIgnoreCase("com.whatsapp.w4b")) { String otpErrorKey = intent.getStringExtra(OTP_ERROR_KEY);String otpErrorMessage = intent.getStringExtra(OTP_ERROR_MESSAGE_KEY); // Handle errors } } } catch (BadParcelableException e) { Log.e("OtpErrorReceiver", e.getLocalizedMessage()); } } } ]]>

應用示例

請訪問Github網站,參閱適用于Android平臺的WhatsApp一次性密碼 (OTP) 應用示例。該應用示例展示了如何通過 API 發送和接收一次性密碼和驗證碼、如何集成一鍵自動填寫按鈕和復制驗證碼按鈕、如何創建模板以及如何啟動示例服務器。?