odds_account_sdk 1.0.0-dev.7 copy "odds_account_sdk: ^1.0.0-dev.7" to clipboard
odds_account_sdk: ^1.0.0-dev.7 copied to clipboard

Odds client side account authentication and authorization SDK

Odds client side account authentication and authorization SDK.

Features #

OddsHorizon client side account SDK.

Getting started #

Add dependency #

odds_account_sdk: ^1.0.0-dev.7

Usage #

SDK 提供了两种不同的账号认证流程 API

  • 由客户端程序自行处理用户录入的身份凭据进行认证的核心认证流程
  • 通过跳转到账号系统自身的认证页面进行认证的OIDC 标准认证流程

更推荐使用第二种OIDC 标准认证流程,开发工作量更小,安全性也更高, 相比较由客户端自行 开发登录/注册页面以及相应的处理逻辑,可以节约9成的开发时间。

通用初始化流程 #

导入模块并创建基于 Authing 服务提供方的 OddsAccountClient 实例。

import 'package:odds_account_sdk/client.dart';

final OddsAccountClient client = OddsAccountClient.authing(
    "$userPoolId", "$appId");

创建 client 实例的参数 userPoolId 和 appId 可以在 Authing 控制台查看。

OIDC 标准认证流程 (推荐) #

1. 生成认证页面的 URI


final OidcAuthSession session = client.createOidcAuthSession();
final String uri = session.getAuthPageUri();

// navigate this uri with WebView or other web container

2. 根据用户操作身份认证页面后的回调 URI 中的信息换取 token

WebView(
  initialUrl: uri,
  javascriptMode: JavascriptMode.unrestricted,
  gestureNavigationEnabled: true,
  ...,
  onPageFinished: function(String url) {
    final Result<AuthInfo> result = 
        await session.obtainAuthInfoByRedirectUri(url);
    
    if (authResult.isSuccess()) {
      final AuthInfo authInfo = result.data;
      currentAccount = authInfo.account;
      accessToken = authInfo.accessToken;
      refreshToken = authInfo.refreshToken;
    }
  }
);

3. 将 accessToken 放置到 grpc 请求的 metadata 中调用后端服务

4. 在 accessToken 过期前,使用 refreshToken 进行更新

final Result<AuthInfo> result = await client.renewToken(refreshToken);

refreshToken 的存活时间一般比较长,所以可以用来刷新存活期较短的 accessToken。 如果在执行 renewToken 时结果返回的 statusCode 为 401,则表示 refreshToken 也过期了, 需要用户重新登录。

退出登录 #

client.logout();
2
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Odds client side account authentication and authorization SDK

Homepage
Repository

License

unknown (LICENSE)

Dependencies

authing_sdk, flutter, json_annotation

More

Packages that depend on odds_account_sdk