Hamuga ID SDK

Hamuga ID authentication SDK for Flutter.

English | Монгол


English

Features

  • Customizable HamugaIdButton widget.
  • Support for different button sizes and variants.
  • Handles Hamuga ID OAuth 2.0 flow.
  • Singleton architecture with HamugaId.instance.
  • Stream-based and Future-based result handling.
  • Supports callback parameters returned in both query and fragment formats.

Installation

dependencies:
  hamuga_id_sdk: ^0.0.10
flutter pub get

Usage

1. Initialize the SDK

Initialize HamugaId in your main() function. Important: Call WidgetsFlutterBinding.ensureInitialized() first.

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  HamugaId.initialize(
    const HamugaIdConfig(
      clientId: 'YOUR_CLIENT_ID',
      redirectUri: 'YOUR_REDIRECT_URI',
      scopes: [HamugaIdScope.openid, HamugaIdScope.email],
    ),
  );
  runApp(const MyApp());
}

2. Listen for Auth Responses

HamugaId.instance.onAuthResponse.listen((response) {
  if (response.isSuccess) {
    print('Auth Code: ${response.code}');
  } else {
    print('Error: ${response.error}');
  }
});

3. Configure Redirect Handling

Use the same custom URI scheme in your Hamuga config and app platform setup.

Android AndroidManifest.xml:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="hamugaidsdkflutter" android:host="callback" />
</intent-filter>

iOS Info.plist:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>hamugaidsdkflutter</string>
    </array>
  </dict>
</array>

If your redirect URI is hamugaidsdkflutter://callback, your app must register the same scheme and callback host.

4. Manual Trigger

final response = await HamugaId.instance.signIn(
  autoClose: true, // Automatically close browser on redirect (default: true)
);

5. Utility Functions

Extract Code from URL

final code = HamugaId.getAuthCodeFromUrl(url);

Manual Close

await HamugaId.instance.close();

6. Notes

  • The SDK can read auth callback values from both ?code=... and #code=... style redirects.
  • Error callbacks such as #error=... are also supported.

Монгол

Боломжууд

  • Өөрчлөх боломжтой HamugaIdButton виджет.
  • Төрөл бүрийн хэмжээ болон загварын сонголттой.
  • Hamuga ID OAuth 2.0 урсгалыг бүрэн дэмжинэ.
  • HamugaId.instance ашиглан тохиргоог нэг дороос удирдах боломжтой.
  • Stream болон Future ашиглан хариуг хүлээн авна.
  • Callback-ийн параметрүүдийг query болон fragment хоёр хэлбэрээс уншина.

Суулгах

dependencies:
  hamuga_id_sdk: ^0.0.10
flutter pub get

Хэрэглээ

1. SDK-г эхлүүлэх

main() функц дотор HamugaId-г эхлүүлнэ. Анхаар: Эхлээд WidgetsFlutterBinding.ensureInitialized()-г заавал дуудна.

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  HamugaId.initialize(
    const HamugaIdConfig(
      clientId: 'YOUR_CLIENT_ID',
      redirectUri: 'YOUR_REDIRECT_URI',
      scopes: [HamugaIdScope.openid, HamugaIdScope.email],
    ),
  );
  runApp(const MyApp());
}

2. Хариуг сонсох

HamugaId.instance.onAuthResponse.listen((response) {
  if (response.isSuccess) {
    print('Auth Code: ${response.code}');
  } else {
    print('Error: ${response.error}');
  }
});

3. Redirect тохиргоо

redirectUri дээр ашиглаж буй custom scheme-ээ Android болон iOS дээр ижил бүртгэх шаардлагатай.

Android AndroidManifest.xml:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="hamugaidsdkflutter" android:host="callback" />
</intent-filter>

iOS Info.plist:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>hamugaidsdkflutter</string>
    </array>
  </dict>
</array>

Жишээ нь redirectUri нь hamugaidsdkflutter://callback бол scheme болон host хоёрыг app дээрээ зөв бүртгэсэн байх ёстой.

4. Програмын аргаар нээх

final response = await HamugaId.instance.signIn(
  autoClose: true, // Redirect таарвал хөтөчийг автоматаар хаана (өгөгдмөл: true)
);

5. Туслах функцууд

URL-аас код салгах

final code = HamugaId.getAuthCodeFromUrl(url);

Хөтөчийг гараар хаах

await HamugaId.instance.close();

6. Тэмдэглэл

  • SDK нь ?code=... болон #code=... аль аль callback хэлбэрийг дэмжинэ.
  • #error=... зэрэг алдааны callback-уудыг мөн зөв уншина.

License

MIT