Flutter身份验证插件authing_sdk_odds的使用
Flutter身份验证插件authing_sdk_odds的使用
获取开始
添加依赖
在你的pubspec.yaml文件中,添加以下依赖:
dependencies:
authing_sdk_odds: ^1.0.0
SDK初始化
在应用启动时,调用初始化方法:
import 'package:authing_sdk_odds/authing.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Authing.init('userPoolId', 'appId');
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Authing SDK Example')),
body: Center(child: Text('Hello World')),
),
);
}
}
其中userPoolId是你的Authing用户池ID,appId是你的Authing应用程序ID。
本地部署
对于本地部署,在调用init方法后,还需要调用以下方法:
Authing.setOnPremiseInfo('host', 'publicKey');
其中host是你的自定义域名(例如mycompany.com),publicKey是组织的公钥。如果有任何问题,请联系Authing销售团队。
API
基础认证API
注册邮箱
通过邮箱注册新用户。邮箱不区分大小写,并且必须在一个给定的用户池内唯一。注册后,emailVerified为false。
import 'package:authing_sdk_odds/client.dart';
Future<void> registerByEmail() async {
AuthResult result = await AuthClient.registerByEmail("x@example.com", "strong");
User user = result.user;
print(user);
}
注册用户名
通过用户名注册新用户。用户名区分大小写,并且必须在一个给定的用户池内唯一。
Future<void> registerByUserName() async {
AuthResult result = await AuthClient.registerByUserName("nextgeneration", "strong");
User user = result.user;
print(user);
}
注册手机号
通过手机号和验证码注册新用户。手机号必须在一个给定的用户池内唯一。
Future<void> registerByPhoneCode() async {
// 首先发送验证码
AuthResult sendResult = await AuthClient.sendSms("13012345678", "+86");
if (sendResult.code == 200) {
// 调用注册方法
AuthResult result = await AuthClient.registerByPhoneCode("13012345678", "1121", "strong");
User user = result.user;
print(user);
}
}
使用账号和密码登录
Future<void> loginByAccount() async {
AuthResult result = await AuthClient.loginByAccount("your account", "your password");
User user = result.user; // 用户信息
print(user);
}
使用手机号和验证码登录
Future<void> loginByPhoneCode() async {
// 首先发送验证码
AuthResult sendResult = await AuthClient.sendSms("13012345678", "+86");
if (sendResult.code == 200) {
// 调用登录方法
AuthResult result = await AuthClient.loginByPhoneCode("13012345678", "1234");
User user = result.user; // 获取用户信息
print(user);
}
}
通过LDAP登录
Future<void> loginByLDAP() async {
AuthResult result = await AuthClient.loginByLDAP("your username", "your password");
User user = result.user; // 用户信息
print(user);
}
通过AD登录
Future<void> loginByAD() async {
AuthResult result = await AuthClient.loginByAD("your username", "your password");
User user = result.user; // 用户信息
print(user);
}
获取当前用户
Future<void> getCurrentUser() async {
AuthResult result = await AuthClient.getCurrentUser();
User user = result.user; // 用户信息
print(user);
}
登出
Future<void> logout() async {
AuthResult result = await AuthClient.logout();
var code = result.code;
print(code);
}
发送短信验证码
Future<void> sendSMSCode() async {
AuthResult result = await AuthClient.sendSms("13012345678", "+86");
var code = result.code;
print(code);
}
发送邮件
Future<void> sendEmail() async {
AuthResult result = await AuthClient.sendEmail("cool@gmail.com", "RESET_PASSWORD");
var code = result.code;
print(code);
}
获取用户自定义数据
Future<void> getCustomData() async {
AuthResult result = await AuthClient.getCustomData("user_id");
var value = AuthClient.currentUser?.customData[0]["key"];
print(value);
}
设置用户自定义数据
Future<void> setCustomData() async {
AuthClient.currentUser?.customData[0]["value"] = "hello";
AuthResult result = await AuthClient.setCustomData(AuthClient.currentUser!.customData);
print(result.code);
}
通过手机号码重置密码
Future<void> resetPasswordByPhoneCode() async {
AuthResult result = await AuthClient.resetPasswordByPhoneCode("13012345678", "1234", "strong");
expect(result.code, 200);
print(result.code);
}
通过邮箱重置密码
Future<void> resetPasswordByEmailCode() async {
AuthResult result = await AuthClient.resetPasswordByEmailCode("cool@gmail.com", "1234", "strong");
expect(result.code, 200);
print(result.code);
}
更新用户资料
Future<void> updateUserProfile() async {
AuthResult result = await AuthClient.updateProfile({
"username":"elonmusk",
"nickname":"Ironman"
});
print(result.code);
}
更新密码
Future<void> updateUserPassword() async {
AuthResult result = await AuthClient.updatePassword("newPassword", "oldPassword");
var code = result.code;
print(code);
}
绑定手机号
Future<void> bindPhone() async {
AuthResult result = await AuthClient.bindPhone("13012345678", "1234");
var code = result.code;
print(code);
}
解绑手机号
Future<void> unbindPhone() async {
AuthResult result = await AuthClient.unbindPhone();
print(result.code);
}
更新手机号
Future<void> updatePhone() async {
AuthResult result = await AuthClient.updatePhone("13012345678", "1234");
print(result.code);
}
绑定邮箱
Future<void> bindEmail() async {
AuthResult result = await AuthClient.bindEmail("1@gmail.com", "1234");
var code = result.code;
print(code);
}
解绑邮箱
Future<void> unbindEmail() async {
AuthResult result = await AuthClient.unbindEmail();
print(result.code);
}
更新邮箱
Future<void> updateEmail() async {
AuthResult result = await AuthClient.updateEmail("1@gmail.com", "1234");
print(result.code);
}
关联账户
Future<void> linkAccounts() async {
AuthResult result = await AuthClient.link("first_token", "second_token");
print(result.code);
}
取消关联账户
Future<void> unlinkAccounts() async {
AuthResult result = await AuthClient.unlink("wechat:mobile");
print(result.code);
}
计算密码安全等级
int securityLevel = AuthClient.computePasswordSecurityLevel("123");
print(securityLevel); // 输出0
获取安全级别
Future<void> getSecurityLevel() async {
Result result = await AuthClient.getSecurityLevel();
int score = result.data["score"];
print(score);
}
列出应用
Future<void> listApplications() async {
Result result = await AuthClient.listApplications();
int count = result.data["totalCount"];
print(count);
}
列出组织
Future<void> listOrganizations() async {
Result result = await AuthClient.listOrgs();
List list = result.data["data"];
print(list);
}
列出角色
Future<void> listRoles() async {
Result result = await AuthClient.listRoles();
List list = result.data["data"];
print(list);
}
列出授权资源
Future<void> listAuthorizedResources() async {
Map result = await AuthClient.listAuthorizedResources("default");
String code = result["list"][0]["code"];
print(code);
}
更新ID Token
Future<void> updateIdToken() async {
Map result = await AuthClient.updateIdToken();
print(result);
}
通过首次登录令牌重置密码
Future<void> resetPasswordByFirstLoginToken() async {
AuthResult result = await AuthClient.resetPasswordByFirstLoginToken("token", "strong");
print(result.code);
}
社交API
通过微信登录
Future<void> loginByWeChat() async {
AuthResult result = await AuthClient.loginByWechat("connId", "code");
print(result.code);
}
通过支付宝登录
Future<void> loginByAlipay() async {
AuthResult result = await AuthClient.loginByAlipay("connId", "code");
print(result.code);
}
通过苹果登录
Future<void> loginByApple() async {
AuthResult result = await AuthClient.loginByApple("code");
print(result.code);
}
MFA API
MFA检查
Future<void> mfaCheck() async {
bool r1 = await AuthClient.mfaCheck("13012345678", null);
bool r2 = await AuthClient.mfaCheck(null, "abc@gmail.com");
print(r1);
print(r2);
}
通过手机号MFA验证
Future<void> mfaVerifyByPhone() async {
AuthResult result = await AuthClient.mfaVerifyByPhone("13012345678", "1234");
print(result.code);
}
通过邮箱MFA验证
Future<void> mfaVerifyByEmail() async {
AuthResult result = await AuthClient.mfaVerifyByEmail("1@gmail.com", "1234");
print(result.code);
}
通过TOTP MFA验证
Future<void> mfaVerifyByTOTP() async {
AuthResult result = await AuthClient.mfaVerifyByTOTP("1234");
print(result.code);
}
通过恢复码MFA验证
Future<void> mfaVerifyByRecoveryCode() async {
AuthResult result = await AuthClient.mfaVerifyByRecoveryCode("1234");
print(result.code);
}
OIDC API
通过授权码登录
Future<void> authByCode() async {
AuthResult result = await AuthClient.authByCode("P6FENDfGSH72PxgJQk17FoGMWY3oL1G0D2PQ1AfyDeo",
"fu6IivbcEb7DFCytjLmoAICRtFLbG9zkk5QdDbNd0gG",
"https://guard.authing/redirect");
String ak = result.user?.accessToken;
String idToken = result.user?.idToken;
print(ak);
print(idToken);
}
通过账号和密码登录
Future<void> oidcLoginByAccount() async {
AuthResult result = await AuthClient.loginByAccount("your account", "your password");
User user = result.user; // 用户信息
print(user);
}
通过手机号码和验证码登录
Future<void> oidcLoginByPhoneCode() async {
AuthResult result = await AuthClient.loginByPhoneCode("phone", "code");
User user = result.user; // 获取用户信息
print(user);
}
构建授权URL
Future<void> buildAuthorizeUrl() async {
AuthRequest authRequest = AuthRequest();
authRequest.createAuthRequest();
// authRequest.scope = "scope";
// authRequest.redirectUrl = "redirectUrl";
String url = await AuthClient.buildAuthorizeUrl(authRequest);
print(url);
}
通过Access Token获取用户信息
Future<void> getUserInfoByAccessToken() async {
Result result = await AuthClient.getUserInfoByAccessToken("accessToken");
print(result.data);
}
通过刷新Token获取新的Access Token
Future<void> getNewAccessTokenByRefreshToken() async {
AuthResult result = await AuthClient.getNewAccessTokenByRefreshToken("refreshToken");
User user = result.user; // 获取用户信息
print(user);
}
扫描API
标记二维码已扫描
Future<void> markQRCodeScanned() async {
Result result = await AuthClient.markQRCodeScanned("ticket");
print(result.code);
}
通过扫描二维码登录
Future<void> loginByScannedTicket() async {
Result result = await AuthClient.loginByScannedTicket("random");
print(result.code);
}
更多关于Flutter身份验证插件authing_sdk_odds的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复


