搜尋套件、儲存庫與 APP 分類

smart_auth 封面
套件詳情v4.0.0

smart_auth

Android 短信使用者同意 API、短信檢索 API 的包裝,用於讀取一次性簡訊代碼、取得使用者電話號碼、OTP、OTC、簡訊自動填入、Android 自動填入

Android
近 30 天下載
16.7萬
喜歡數
211
Pub 分數
160

安裝套件

flutter pub add smart_auth

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

SmartAuth 是一個 Flutter 套件,透過利用 Android 短訊使用者同意 API 和短訊檢索 API,簡化了 Android 上基於 OTP 和簡訊的驗證。它能自動偵測並讀取來自傳入簡訊的一次性密碼(OTP),支援在表單中自動填入 OTP,並安全地取得使用者電話號碼。此套件專為與 PIN、OTP 和密碼欄位無縫整合而設計,透過減少手動輸入來提升使用者體驗。該套件為平台特定,僅適用於 Android。

適用情境

  • 從簡訊中自動檢測OTP
  • 自動填入登入表單中的OTP
  • 從簡訊中讀取使用者電話號碼
  • 透過簡訊自動填入增強登入流程
  • 簡化雙重身分驗證
  • 減少OTP輸入中的使用者輸入錯誤

主要特色

  • 從簡訊中自動提取OTP
  • 安全的電話號碼檢索
  • 僅限 Android 的簡訊自動填入支援
  • 與文字欄位的簡單整合
  • 即時簡訊監控
  • 符合 Android 的 SMS Retriever API

適合對象

  • 需要OTP自動填入的Android應用
  • 使用簡訊雙因素認證的應用程式
  • 尋求原生簡訊整合的開發者
  • 使用者流程中的簡訊驗證
  • 旨在減少登入摩擦的應用

使用建議

  • 僅適用於 Android
  • 需要正確的簡訊格式以進行檢測
  • 需要執行時權限以存取簡訊
  • 僅限具備 Google Play 服務的裝置
  • 取決於簡訊檢索 API 的可用性

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Flutter Smart Auth

Need anything Flutter related? Reach out on LinkedIn

Pub package GitHub starts style: effective dart pub package

Flutter package for listening SMS code on Android, suggesting phone number, email, saving a credential.

If you need pin code input like shown below, take a look at the Pinput package.

Features:

  • Android SMS Autofill
    • SMS Retriever API
    • SMS User Consent API
  • Showing Phone number hints API

Support

Discord Channel

Example

Don't forget to give it a star ⭐

If you want to contribute to this project, please read the contribution guide.

Requirements

1. Set kotlin version to 1.8.0 or above and gradle plugin version to 8.3.2

If you are using legacy imperative apply

// android/build.gradle
buildscript {
    ext.kotlin_version = '1.8.0'
    ...others

    dependencies {
        classpath 'com.android.tools.build:gradle:8.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

If you are using new declarative plugin approach

// android/settings.gradle
plugins {
    id "org.jetbrains.kotlin.android" version "1.8.0" apply false
    id "com.android.application" version "8.3.2" apply false
    ...others
}
2. Set gradle version to 8.4.0 or above - more about gradle versions
// android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
3. Set Java version to 11
// android/app/build.gradle
compileOptions {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

kotlinOptions {
    jvmTarget = '11'
}

Getting Started

Create instance of SmartAuth

final smartAuth = SmartAuth.instance;
Request phone number hint - Docs

The Phone Number Hint API, a library powered by Google Play services, provides a frictionless way to show a user’s (SIM-based) phone numbers as a hint.

The benefits to using Phone Number Hint include the following:

  • No additional permission requests are needed
  • Eliminates the need for the user to manually type in the phone number
  • No Google account is needed
  • Not directly tied to sign in/up workflows
  • Wider support for Android versions compared to Autofill
void requestPhoneNumberHint() async {
  final res = await smartAuth.requestPhoneNumberHint();
  if (res.hasData) {
    // Use the phone number
  } else {
    // Handle error
  }
}
Get SMS with User Consent API

The SMS User Consent API complements the SMS Retriever API by allowing an app to prompt the user to grant access to the content of a single SMS message. When a user gives consent, the app will then have access to the entire message body to automatically complete SMS verification. The verification flow looks like this:

  1. A user initiates SMS verification in your app. Your app might prompt the user to provide a phone number manually or request the phone number hint by calling requestPhoneNumberHint method.
  2. Your app makes a request to your server to verify the user's phone number. Depending on what information is available in your user database, this request might include the user's ID, the user's phone number, or both.
  3. At the same time, your app calls the getSmsWithUserConsentApi to show the user a dialog to grant access to the SMS message.
  4. Your server sends an SMS message to the user that includes a one-time code to be sent back to your server.
  5. When the user's device receives the SMS message, the getSmsWithUserConsentApi will extract the one-time code from the message text and you have to send it back to your server.
  6. Your server receives the one-time code from your app, verifies the code, and finally records that the user has successfully verified their account.
void getSmsWithUserConsentApi() async {
  final res = await smartAuth.getSmsWithUserConsentApi();
  if (res.hasData) {
    final code = res.requireData.code;

    /// The code can be null if the SMS was received but the code was not extracted from it
    if (code == null) return;
    //  Use the code
  } else if (res.isCanceled) {
    // User canceled the dialog
  } else {
    // handle the error
  }
}
Get SMS with SMS Retriever API

With the SMS Retriever API, you can perform SMS-based user verification in your Android app automatically, without requiring the user to manually type verification codes, and without requiring any extra app permissions. When you implement automatic SMS verification in your app, the verification flow looks like this:

  1. A user initiates SMS verification in your app. Your app might prompt the user to provide a phone number manually or request the phone number hint by calling requestPhoneNumberHint method.
  2. Your app makes a request to your server to verify the user's phone number. Depending on what information is available in your user database, this request might include the user's ID, the user's phone number, or both.
  3. At the same time, your app calls the getSmsWithRetrieverApi to begin listening for an SMS response from your server.
  4. Your server sends an SMS message to the user that includes a one-time code to be sent back to your server, and a hash that identifies your app.
  5. When the user's device receives the SMS message, Google Play services uses the app hash to determine that the message is intended for your app, and makes the message text available to your app through the SMS Retriever API.
  6. The getSmsWithRetrieverApi will extract the one-time code from the message text and you have to send it back to your server.
  7. Your server receives the one-time code from your app, verifies the code, and finally records that the user has successfully verified their account.
void getSmsWithRetrieverApi() async {
  final res = await smartAuth.getSmsWithRetrieverApi();
  if (res.hasData) {
    final code = res.requireData.code;

    /// The code can be null if the SMS was received but the code was not extracted from it
    if (code == null) return;
    //  Use the code
  } else {
    // handle the error
  }
}
Dispose

The plugin automatically removes listeners after receiving the code, if not you can remove them by calling the removeUserConsentApiListener or removeSmsRetrieverApiListener method.

void removeSmsListener() {
  smartAuth.removeUserConsentApiListener();
  // or
  smartAuth.removeSmsRetrieverApiListener();
}

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案