패키지, 저장소 및 앱 카테고리 검색

smart_auth 표지
패키지 상세v4.0.0

smart_auth

안드로이드 SMS 사용자 동의 API, SMS 리트리버 API의 래퍼로 일회용 SMS 코드 읽기, 사용자 전화번호 얻기, OTP, OTC, SMS 자동 채우기, 안드로이드 자동 채우기

Android
30일 다운로드
16.7만
좋아요
211
Pub 점수
160

패키지 설치

flutter pub add smart_auth

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

SmartAuth는 Android에서 OTP 및 SMS 기반 인증을 단순화하는 Flutter 패키지로, Android SMS 사용자 동의 API와 SMS 리트리버 API를 활용합니다. 수신된 SMS에서 일회용 비밀번호(OTP)를 자동으로 감지하고 읽을 수 있으며, 양식에 OTP를 자동 채우고 사용자의 전화번호를 안전하게 가져올 수 있습니다. PIN, OTP 및 암호 필드와의 원활한 통합을 위해 설계되어 수동 입력을 줄여 사용자 경험을 향상시킵니다. 이 패키지는 플랫폼 전용이며 Android에서만 작동합니다.

사용 사례

  • SMS에서 OTP 자동 감지
  • 로그인 폼에서 OTP 자동 채우기
  • SMS에서 사용자 전화번호 읽기
  • SMS 자동 채우기로 로그인 흐름 개선
  • 이중 인증 간소화
  • OTP 입력 시 사용자 입력 오류 감소

주요 기능

  • SMS에서 자동 OTP 추출
  • 안전한 전화번호 검색
  • 안드로이드 전용 SMS 자동 채우기 지원
  • 텍스트 필드와의 간단한 통합
  • 실시간 SMS 모니터링
  • Android의 SMS Retriever API와 호환됩니다

적합한 대상

  • OTP 자동 채우기를 요구하는 안드로이드 앱
  • SMS 기반 2단계 인증을 사용하는 앱
  • 네이티브 SMS 통합을 원하는 개발자
  • SMS 인증이 있는 사용자 흐름
  • 로그인의 번거로움을 줄이려는 앱

고려 사항

  • 안드로이드에서만 작동합니다
  • 감지에 적절한 SMS 형식이 필요합니다
  • SMS 액세스를 위한 런타임 권한이 필요합니다
  • Google Play 서비스를 갖춘 기기로 제한
  • SMS 리트리버 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 개

소스 저장소

이 패키지를 사용하는 프로젝트