uae_pass
Un-official UAE Pass Flutter plugin for iOS, Android, and Web.
Platform Screenshots
Android | iOS | Web |
---|---|---|
![]() |
![]() |
![]() |
Platform Support
Platform | Supported | Implementation |
---|---|---|
iOS | ✅ | WKWebView with full screen modal |
Android | ✅ | Custom WebView Activity |
Web | ✅ | OAuth2 popup authentication |
Getting Started
- Add the plugin to your pubspec.yaml file
flutter_uae_pass: ^1.0.5
- Run flutter pub get
flutter pub get
- Import the package
import 'package:flutter_uae_pass/flutter_uae_pass.dart';
final _uaePassPlugin = UaePass();
- Initialize the plugin - Sandbox
await _uaePassPlugin.setUpSandbox();
- Initialize the plugin - Production
await _uaePassPlugin.setUpEnvironment(
clientId: "<clientId>",
clientSecret: "<clientSecret>",
urlScheme: "myappscheme",
redirectUri: "<redirectUri>",
isProduction: true,
language : "en",
);
Scopes are as follows
- urn:uae:digitalid:profile:general
- urn:uae:digitalid:profile
Main features
- signIn()
- getAccessToken(String authCode)
- getProfile(String token)
- signOut()
Call the authenticate method
String? authCode = await _uaePassPlugin.signIn();
To get access token
String? accessToken = await _uaePassPlugin.getAccessToken(authCode);
To get public profile data
you can fetch this information from profile
- idn
- firstnameAR
- firstnameEN
- fullnameEN
- gender
- lastnameAR
- lastnameEN
- mobile
- nationalityAR
- nationalityEN
- sub
- userType
- uuid
ProfileData? profileData = await _uaePassPlugin.getProfile(accessToken);
iOS Setup
- Add the following to your Info.plist file
<key>LSApplicationQueriesSchemes</key>
<array>
<string>uaepass</string>
<string>uaepassqa</string>
<string>uaepassdev</string>
<string>uaepassstg</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>myappscheme</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myappscheme</string>
</array>
</dict>
</array>
Android Setup
- Update android:launchMode="singleTask" the AndroidManifest.xml file
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTask"
.....
</activity>
- Set up the queries in your AndroidManifest.xml file (To make our app open UAE Pass App)
<queries>
<package android:name="ae.uaepass.mainapp" />
<package android:name="ae.uaepass.mainapp.qa" />
<package android:name="ae.uaepass.mainapp.stg" />
</queries>
- Set up the intent filter in your AndroidManifest.xml file (To Reopen our application after uaepass done)
<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:host="success"
android:scheme="myappscheme" />
<data
android:host="failure"
android:scheme="myappscheme" />
</intent-filter>
Web Setup
For web applications, no additional configuration is required! The plugin automatically uses a popup-based OAuth2 flow that works in all modern browsers.
Web-Specific Features:
- Popup Authentication: Opens UAE Pass login in a secure popup window
- Automatic Redirect Handling: Automatically detects and processes the authorization callback
- CORS Compliance: Uses proper HTTP requests for token exchange and profile retrieval
- Session Management: Handles cookies and localStorage for proper logout functionality
Browser Requirements:
- Modern browsers with popup support (Chrome, Firefox, Safari, Edge)
- JavaScript enabled
- Cookies enabled for proper session management
Production Considerations:
- Ensure your redirect URI is properly configured in the UAE Pass dashboard
- For production, make sure your domain is whitelisted in UAE Pass configuration
- Test popup blockers - inform users to allow popups for your domain if needed
References
Thanks for Faisal for this repo uae_pass_flutter i improve the code and create this package