odds_account_sdk 1.0.0-dev.7 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();