Authing 知识库
🛠 开发资源🥂 集成案例🔭 常见问题🖥 控制台
3.0.0
3.0.0
  • 欢迎
  • Authing 概述
  • 快速开始
    • 注册 Authing 开发者账号
    • 第一个应用
    • 基础概念
    • 实现单点登录
    • 控制台概览
    • 部署模型和价格
    • 最佳开发实践
    • 我该如何选择 Authing 的技术
  • 进阶指南
    • 理解认证和授权
      • 用户名 - 密码认证
      • 邮箱 - 密码认证
      • 手机 - 验证码认证
      • JWT Token 释义及使用
    • 验证 Token
    • 配置用户权限
    • 迁移老数据进 Authing
    • 错误代码
  • 认证
    • 接入 OAuth 2.0
      • 创建 OAuth 应用
      • 使用 OAuth 授权
    • 接入 OpenID Connect
      • 创建 OIDC 应用
      • 使用 OIDC 授权
      • 理解 OIDC 流程
      • OIDC 常见问题
    • 接入 SAML
      • 创建 SAML Identity Provider 应用
      • 创建 SAML Service Provider 应用
      • 理解 SAML 流程
      • 同时使用 Authing 作为 SP 和 IdP
      • 使用 SAML Identity Provider
        • 在阿里云访问管理中使用
        • 在腾讯云访问管理中使用
        • 在 Auth0 中使用
      • 使用 SAML Service Provider
        • 与 Auth0 SAML IdP 对接
        • 与 SSOCircle SAML IdP 对接
    • 接入 LDAP
      • 配置 LDAP 服务
      • 使用 Authing 的 LDAP 用户目录
    • 接入 Active Directory
  • 社会化登录
    • 接入 Web 端社会化登录
      • GitHub 登录
      • 微信 PC 扫码登录
      • 微信 APP 内网页登录
      • 企业微信(第三方应用)网页授权登录
      • 企业微信(第三方应用)扫码登录
      • 企业微信(企业内部)扫码登录
      • 新浪微博登录
      • 钉钉登录
      • QQ 登录
      • 配置登录授权 Scope
    • 接入移动端社会化登录
      • 微信登录
      • 支付宝登录
    • 接入小程序登录
      • 小程序登录
        • 用户登录凭证(code)最佳实践
      • APP 拉起小程序登录
    • 打通微信账号体系
  • 扫码登录
    • 小程序扫码登录
      • 接入私有化小程序
    • APP 扫码登录
      • 快速接入
      • Web 端 SDK
      • 完整接口列表
      • 自定义配置项
      • 扫码登录原理
  • 移动应用登录
    • 移动应用 SSO
      • 自动检测登录
      • 唤起 App 登录
    • 移动应用身份提供商
  • 授权
    • Authorization 基础概念
      • 什么是基于角色的管理(RBAC)
      • 什么是基于属性的管理(ABAC)
      • 什么是零信任网络
    • Authorization at Authing
    • 接入 RBAC
    • 接入 ABAC
    • 接入组织机构管理
  • 扩展能力
    • 自定义认证流程(Pipeline)
      • 创建你的第一个 Pipeline 函数
      • Pipeline 函数开发指南
      • 应用场景
      • user 对象
      • context 对象
      • 使用环境变量
      • 可用的 Node Modules
      • 如何调试
      • Node SDK
      • GraphQL API
      • 常见问题
      • 私有化部署
    • 使用 Webhook
    • 自定义用户字段
  • 开发资源
    • 开发资源
    • API(GraphQL)
    • Guard for Web
      • 自定义 Guard 的 UI 样式
    • Guard for Mobile
      • Guard for React Native
    • Guard VS 自定义 UI
    • SDK for 单点登录
    • SDK for JavaScript
      • 查询用户权限
      • 绑定社会化登录
      • 自定义用户字段
      • 管理 MFA 口令
      • 自定义请求链接
    • SDK for Node.js
      • 权限控制
      • 查询用户权限
      • 组织机构管理
      • 老版权限控制(deprecated)
      • Pipeline 函数
      • 自定义用户字段
      • 绑定社会化登录
      • 管理 MFA 口令
      • 自定义请求连接
    • SDK for React Native
    • SDK for 微信小程序
    • SDK for Java
    • SDK for Objective-C
    • SDK for Python
    • SDK for Go
    • SDK for PHP
    • 函数计算(FaaS)
  • 通信
    • 邮件
    • SMS
  • MFA
    • 配置 MFA 安全口令
      • 使用 Microsoft Authenticator 添加 MFA 令牌
    • 接入 MFA
  • 安全
    • 配置 Web 安全域
    • 配置用户池密码强度
    • 配置密码加密函数
  • 其他
    • 常见问题
    • 集成案例
      • Authing 与 AWS 集成案例
      • 函数计算与 AaaS 集成案例
      • Odoo 集成案例
      • 社会化登录集成案例
    • 社交互联数据
    • 为 Authing 贡献 SDK
      • 了解 Authing 的模块
Powered by GitBook
On this page
  • 安装
  • 开始使用
  • 错误处理
  • 自定义请求链接
  • 接口文档
  • 登录
  • 注册
  • 查询用户数据
  • 查询用户列表
  • 检查登录状态
  • 更改用户邮箱
  • 修改用户资料
  • 获取通过 Role 获取用户
  • 绑定 Oauth
  • 获取当前 MFA 信息
  • 获取 AuthedAppList
  • 更新 Phone 信息
  • 解析 Token
  • 解绑邮箱 UnbindEmail
  • 使用 LDAP 登陆
  • 读取 UserOAuthList
  • 解绑 Oauth
  • 更改 MFA 信息
  • 获取用户池设置
  • 测试 Preflight是否正常运行
  • 撤回用户对某个 SSO 应用的授权
  • 测试 Cdn 状态
  • 删除用户

Was this helpful?

  1. 开发资源

SDK for Python

PreviousSDK for Objective-CNextSDK for Go

Last updated 5 years ago

Was this helpful?

Authing Python SDK 目前只支持 Python3+。

GitHub 地址:。

安装

pip

当构建大规模应用时,我们推荐使用 pip 进行安装, 它可以与一些模块打包工具很好地配合使用。 注意,Authing 目前仅能从 pip3 以上安装。

# latest stable
$ pip install authing

开始使用

首先在目录下新建一个名为 pub.pem 的文件,并将以下内容复制到文件中:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4xKeUgQ+Aoz7TLfAfs9+paePb
5KIofVthEopwrXFkp8OCeocaTHt9ICjTT2QeJh6cZaDaArfZ873GPUn00eOIZ7Ae
+TiA2BKHbCvloW3w5Lnqm70iSsUi5Fmu9/2+68GZRH9L7Mlh8cFksCicW2Y2W2uM
GKl64GDcIq3au+aqJQIDAQAB
-----END PUBLIC KEY-----

然后初始化 Authing:

from authing.authing import Authing

clientId = 'your_client_id'
secret = 'your_app_secret'

authing = Authing(clientId, secret)

# 如果 authing 验证 clientId 和 secret 失败,将会抛出一个错误。所以在初始化构造函数的时候,可以使用 try...catch 保证程序不会挂掉。

user = authing.login(
    'test@testmail.com',
    'testpassword'
)

if user.get('errors'):
    # 出错
else:
    # 未出错

错误处理

SDK 中的接口返回数据若出错会存在 "errors" 字段,因此可以用如下代码检查是否出错:

result = authing.xxx() # 执行 authing 的某方法

if result.get('errors'):
    # 出错,如 
    """
    {'code': 500, 'message': 'Cast to ObjectId failed for value "5aec1ea610ecb800018db176xx" at path "_id" for model "User"', 'data': None, 'errors': True}
    """
else:
    # 未发生错误,直接使用数据即可,如:
    """
    {'_id': '5aec1ea610ecb800018db176', 'email': 'xieyang@dodora.cn', 'isDeleted': False}
    """

自定义请求链接

如果你私有部署了 Authing,可以通过以下方式初始化 URL:

from authing.authing import Authing

clientId = 'your_client_id'
secret = 'your_app_secret'

authing = Authing(clientId, secret, {
    "oauth": 'https://oauth.your_url.com/graphql',
    "users": 'https://users.your_url.com/graphql'
})

接口文档

登录

使用邮箱密码登录

userInfo = authing.login(email='EMAIL', password='Password')

使用用户名密码登录

userInfo = authing.login(username='USERNAME', password='Password')

使用手机号密码登陆

userInfo = authing.loginByPhonePassword(phone, password)

使用短信验证码登陆

userInfo = authing.loginByPhoneCode(
    phone="PHONE",
    phoneCode=PHONE_CODE
)

发送登陆验证码

success, msg = authing.sendOneTimePhoneCode(phone)
if success:
    # 发送成功
    pass
else:
    # 发送失败
    print(msg)

发送注册验证码

success, msg = authing.sendRegisterPhoneCode(phone)
if success:
    # 发送成功
    pass
else:
    # 发送失败
    print(msg)

注册

userInfo = authing.register('EMAIL', 'Password')

使用手机号注册

authing.registerByPhone(phone, password, phoneCode)

查询用户数据

userInfo = authing.user({'id': 'USER_ID'})

查询用户列表

usersList = authing.list(page=1, count=10)

检查登录状态

# Token 可通过登录之后返回的 userInfo 中的 token 字段获取
result = authing.checkLoginStatus('TOKEN')

更改用户邮箱

发送邮箱验证码

authing.sendChangeEmailVerifyCode("EMAIL")

执行邮箱更换

result = authing.updateEmail(options={
    'email': 'EMAIL',
    'emailCode': 'CODE'
    }
)

其中 `options` 的参数为

  • email 新邮箱 {String} 必填

  • emailCode 邮箱验证码 {String} 必填

  • oldEmail 原邮箱 {String},选填

  • oldEmailCode 原邮箱验证码 {String},选填

修改用户资料

result = authing.update({
    '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},选填,是否被删除

获取通过 Role 获取用户

res = authing.getUsersByRole(role['_id'])

绑定 Oauth

res = authing.bindOAuth({
    'user': user_id,
    'type': 'Github',
    'unionid': unionid,
    'userInfo': userInfo
})

获取当前 MFA 信息

res = authing.queryMFA()

获取 AuthedAppList

res = authing.getAuthedAppList()

更新 Phone 信息

res = authing.updatePhone({'phone': '13461115929', 'phoneCode': '1234'})

解析 Token

res = authing.decodeToken()

解绑邮箱 UnbindEmail

res = authing.unbindEmail()

使用 LDAP 登陆

authing.loginByLDAP(username, password)

读取 UserOAuthList

authing.readOAuthList()

解绑 Oauth

res = authing.unbindOAuth(user_id, 'github')

更改 MFA 信息

res = authing.changeMFA(user_id, True)

获取用户池设置

res = authing.getUserPoolSettings(userpool_id)

测试 Preflight是否正常运行

res,msg = authing.preflightFun()

撤回用户对某个 SSO 应用的授权

authing.revokeAuthedApp(user_id,app_id)

测试 Cdn 状态

authing.cdnPreflightFun()

删除用户

result = authing.remove('USER_ID')

如果在运行途中报错,请查看。

https://github.com/Authing/authing-py-sdk
错误代码列表
如何获取 Client ID 和 Client Secret ?