# SDK for Python
Authing Python SDK 目前只支持 Python3+。
GitHub 地址:https://github.com/Authing/authing-py-sdk (opens new window)。
# 1. 安装 Authing SDK
安装需求
- Python 3+
- pip3
当构建大规模应用时,我们推荐使用 pip
进行安装, 它可以与一些模块打包工具很好地配合使用。 注意,Authing 目前仅能从 pip3 以上安装。
# latest stable
$ pip install authing
# 2. 初始化 Authing SDK
# 2.1 获取配置信息
你需要先获取 UserPoolId 和 Secret,查看如何获取 UserPoolId & Secret
# 2.2 使用 Authing UserPoolId & Secret 初始化
from authing import Authing
authing = Authing({
"userPoolId": userPoolId,
"secret": secret,
})
# 2.3 使用 Token 初始化
from authing import Authing
authing = Authing({
"userPoolId": userPoolId,
"token": token,
})
# 2.4 使用账号密码初始化 SDK
from authing import Authing
authing = Authing({"userPoolId": userPoolId })
authing.login({
"username": TEST_USERNAME,
"password": TEST_PASSWORD,
})
# 3. API 接口
Authing-sdk 实现了 Graphql
的封装,所以函数名和参数与 Graphql
语句相对应。支持的 Graphql 语句.
以通过域名查询对应的 OIDC 应用信息为例:
在 SDK 中内置的
Graphql
语句是
query QueryOIDCAppInfoByDomain($domain: String) {
QueryOIDCAppInfoByDomain(domain: $domain) {
_id
name
domain
image
redirect_uris
client_id
client_secret
token_endpoint_auth_method
id_token_signed_response_alg
id_token_encrypted_response_alg
id_token_encrypted_response_enc
userinfo_signed_response_alg
userinfo_encrypted_response_alg
userinfo_encrypted_response_enc
request_object_signing_alg
request_object_encryption_alg
request_object_encryption_enc
jwks_uri
_jwks_uri
custom_jwks
jwks
_jwks
clientId
grant_types
response_types
description
homepageURL
isDeleted
isDefault
when
css
authorization_code_expire
id_token_expire
access_token_expire
cas_expire
loginUrl
customStyles {
forceLogin
hideQRCode
hideUP
hideUsername
hideRegister
hidePhone
hideSocial
hideClose
hidePhonePassword
defaultLoginMethod
}
}
}
所以在 Python SDK 中的调用为
res = auth.QueryOIDCAppInfoByDomain({
domain:'test'
})
查看更多的 Graphql 接口信息 (opens new window)
# 4. 自定义请求链接
如果你私有部署了 Authing,可以通过以下方式初始化:
from authing.authing import Authing
userPoolId = 'your_client_id'
secret = 'your_app_secret'
authing = Authing({
"userPoolId": userPoolId,
"secret": secret,
"host": 'https://oauth.your_url.com/graphql',
'pubKey': PUBLIC_KEY
})
# 5. 接口文档
# 登录
# 使用邮箱密码登录
userInfo = authing.login({
"email": EMAIL,
"password": PASSWORD,
})
# 使用用户名密码登录
userInfo = authing.login({
"username": USERNAME,
"password": PASSWORD,
})
# 使用手机号密码登录
userInfo = authing.login({
"phone": PHONE,
"password": PASSWORD,
})
# 使用手机号验证码登录
userInfo = authing.login({
"phone": PHONE,
"phoneCode": PHONE_CODE,
})
# 注册
userInfo = authing.register({
"username": username,
"password": password
})
# 查询用户数据
userInfo = authing.user({'id': 'USER_ID'})
# 查询用户列表
usersList = authing.users({ 'page': 1, 'count': 10 })
# 检查登录状态
# Token 可通过登录之后返回的 userInfo 中的 token 字段获取
result = authing.checkLoginStatus({
'token': 'TOKEN'
})
# 更改用户邮箱
# 执行邮箱更换
result = authing.updateEmail({
'email': 'EMAIL',
'emailCode': 'CODE'
})
其中参数为
- email 新邮箱
{String} 必填
- emailCode 邮箱验证码
{String} 必填
- oldEmail 原邮箱
{String},选填
- oldEmailCode 原邮箱验证码
{String},选填
# 修改用户资料
result = authing.updateUser({
'KEY': 'VALUE'
})
其中可选 Key 如下所示:
- _id
{String} 必填
- email
{String},选填
- emailVerified:
{Boolean},选填,邮箱是否经过验证
- username:
{String},选填
- nickname:
{String},选填
- company:
{String},选填
- phone:
{String},选填
- oauth:
{String},选填,oauth 信息
- photo:
{String || file object},选填,用户头像
- browser:
{String},选填,用户注册时所用的浏览器
- password:
{String},选填,用户密码
- oldPassword:
{String}(
当有 password 时,旧密码参数必需填写) - token:
{String},选填
- tokenExpiredAt:
{String},选填,token 过期时间
- loginsCount:
{Number},选填,登录次数
- lastLogin:
{String},选填,最后登录时间
- lastIP:
{String},选填,最后登录 IP
- signedUp:
{String},选填,注册时间
- blocked:
{Boolean},选填,是否被锁定
- isDeleted:
{Boolean},选填,是否被删除
- email
# 更新 Phone 信息
res = authing.updatePhone({'phone': '13461115929', 'phoneCode': '1234'})
# 解析 Token
res = authing.decodeToken({ 'token': TOKEN })
# 解绑邮箱 UnbindEmail
res = authing.unbindEmail({ 'user': userId })
# 发送手机验证码
res = authing.sendPhoneCode("phone number")
assert res['code'] == 200
# 使用手机号验证码重置密码
res = authing.resetPasswordByPhoneCode("phone number", "code", "new password")
assert res['code'] == 200
# 发送重置密码邮件(邮件内包含 verifyCode)
res = authing.sendResetPasswordEmail({
'email': email,
})
# 使用邮件验证码重置密码
res = authing.changePassword({
'email': email,
'password': newPassword,
'verifyCode': verifyCode,
})
# 删除用户
result = authing.removeUsers({ 'ids': 'id1,id2,id3' })
更多接口信息, 查看 Authing 的 Graphql 接口文档 (opens new window)
← 自定义请求链接 SDK for C# →