使用 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');
    }
  }

GitHub

查看 Github