使用 Asgardeo 认证您的 Flutter 应用程序
这是一个示例应用程序,演示了如何使用 Asgardeo 对 Flutter 应用程序进行身份验证。
入门
有关如何开始将 Asgardeo 与 Flutter 结合使用的详细信息,请参阅以下 Medium 文章。[链接]
之后
- 转到
config/config.json并根据您的配置编辑这些值
{
"AuthorizationConfig": {
"BaseOrganizationUrl": <BASE ORGANIZATION URL>,
"ClientId": <CLIENT ID OF THE APPLICAITON>,
"Scopes": [
"openid",
"email",
"profile",
"internal_login"
]
}
}
主要功能
登录功能
登录功能位于 lib/controller/login_controller/login_controller.dart。
static Future<AuthorizationTokenResponse?> loginAction() async {
final String clinetId = await AuthorizationConfigUtil.getClientId();
final List<String> scopes = await AuthorizationConfigUtil.getScopes();
final String discoveryUrl = await AuthorizationConfigUtil.getDiscoveryUrl();
try {
final AuthorizationTokenResponse? result =
await _flutterAppAuth.authorizeAndExchangeCode(
AuthorizationTokenRequest(
clinetId,
AuthorizationConfigUtil.getRedirectUrl(),
discoveryUrl: discoveryUrl,
scopes: scopes,
),
);
inspect(result);
return result;
} catch (e, s) {
inspect("login error: $e - stack: $s");
throw Exception("Failed to login");
}
}
注销功能
注销功能位于 lib/controller/login_controller/login_controller.dart。
static Future<EndSessionResponse?> logoutAction(
AuthorizationTokenResponse authorizationTokenResponse) async {
final String discoveryUrl = await AuthorizationConfigUtil.getDiscoveryUrl();
try {
final EndSessionResponse? result = await _flutterAppAuth.endSession(
EndSessionRequest(
idTokenHint:
AuthorizationConfigUtil.getIdToken(authorizationTokenResponse),
postLogoutRedirectUrl: AuthorizationConfigUtil.getRedirectUrl(),
discoveryUrl: discoveryUrl,
),
);
inspect(result);
return result;
} catch (e, s) {
inspect("logout error: $e - stack: $s");
throw Exception("Failed to logout");
}
}
获取用户详细信息功能
获取用户详细信息功能位于 lib/controller/user_details_controller/user_details_controller.dart。
static Future<User> getUserDetails(AuthorizationTokenResponse authorizationTokenResponse) async {
String userinfoUrl = await UserDetailsControllerUtil.getUserIntoUrl();
String accessToken = AuthorizationConfigUtil.getAccessToken(authorizationTokenResponse);
final Response response = await Common.getCall(accessToken, userinfoUrl);
if (response.statusCode == 200) {
return User.fromJsonString(response.body);
} else {
throw Exception('Failed to get user details');
}
}