微信小程序认证

准备工作

小程序对接

准备工作

在测试或对接之前,应用需做以下几点准备工作:

1、确认微信小程序支持标准的OAuth授权码模式支持

流程简介:

  • 获取code。
  • code换token。
  • token换用户信息。
2、网络检查

检查网络是否互通(如DNS),不通则找学校业务负责人。

3、应用信息收集

​ 对接前请先参考《应用信息收集表》统计应用信息,发送给负责的老师或锐捷技术人员,申请对应用进行单点授权配置,授权完成后方可进行对接测试;

应用信息收集表.xlsx

4、应用注册授权(SourceID管理员操作)

(1)应用在SID中注册后,SID将根据填写信息生成应用ID、应用秘钥(若有必要,可向锐捷研发人员索要)。应用注册步骤为:

​ 1、新增对接应用。

image1

​ 2、填写应用基础信息。

image2

(2)单点登录对接配置-进入配置。

image3

(3)配置OAuth2单点登录对接相关信息。

image4

注:

  • 回调地址采用地址匹配模式,可匹配该地址的子集地址。
  • 目前的登出类型为前端登出(FRONT_CHANNEL)。即使用href引用登出地址的方式登出,登出后浏览器跳转到统一认证页面。
  • 记录下应用ID、应用秘钥,以便应用请求SID认证接口。

(4)启用配置。

image5

微信小程序对接

一、获取加密秘钥

image-20201111115147463

获取加密密钥接口

请求⽅式: GET(HTTPS或HTTP

请求地址: http://self.xxx.com/linkid/api/encrypt/get/public/key

注:https方式类似。

请求参数:

参数说明:

返回结果:

示例:
 {
    "code":200,
    "message":"OK",
    "data": {
        "key":"123453456"    
    }
 }

参数说明:

参数 类型 说明
code int int
state String 返回状态消息
data 自定义对象 返回值的自定义对象,即加密密钥
注:加密密钥具体使用规则见获取code接口中state参数说明

二、微信小程序获取code接口

微信小程序获取code接口

请求⽅式: GET(HTTPS或HTTP

请求地址: https://sso.xxx.edu.cn/oauth2.0/authorize

注:https方式类似。

请求参数:

请求示例:
 https://platform-dev.ruishan.cc/oauth2.0/authorize?response_type=code&client_id=sso&redirect_uri=http%3A%2F%2F127.0.0.1:12354%2Fsso&state=ssdsddswww

参数说明:

参数 是否必须 说明
client_id 应用唯一标识,即应用注册时获得的应用id
redirect_uri 授权后重定向的回调链接地址,注意需使用 urlEncode 对链接进行处理
response_type 返回类型,请填写 code
scope 作用域
state 请求授权码时需携带state参数,小程序通过将相关参数组装成JSON串格式后{"openid":"123456789", "unionid":"123456789", "userId":"123456789","from":"appId"} ,通过第一步获取的加密密钥,对JSON串进行AES加密,然后得到的加密串作为state参数传递
openid 用户微信的openid,openid与unionid只需传一个
unionid 用户微信的unionid,openid与unionid只需传一个
userId 多身份用户支持应用指定下发的用户身份信息
from 认证来源,默认为应用的appId,传递openid的时候需要传递from,from值为绑定微信时传递的fromSource参数

返回结果: ,在一系列校验后,会重定向到redirect_uri并且带着code和state

示例:
 https://redirect_uri?code=xxxxx&state=xxx

参数说明:

参数 说明
code 下发的code
state 请求code时带的参数

三、通过 code 换取网页授权token

请求⽅式: POST/GET(HTTPS或HTTP

请求地址: https://sso.xxx.edu.cn/oauth2.0/accessToken

注:https方式类似。

请求参数:

注:请求数据类型为Form表单(application/x-www-form-urlencoded)或者url传参 注:使用get请求时,不用添加请求头

get示例:
grant_type=authorization_code&code=OC-9-iQBaj2rYndjtttJqJE9P6Qn-eoinZGnJ&redirect_uri=http://oauth.client.com.cn:9878&client_id=oauthTest&client_secret=9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O

post示例,from表单:
grant_type:authorization_code
client_id:oauthTest
client_secret:9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O
redirect_uri:http://oauth.client.com.cn:9878
code:OC-9-iQBaj2rYndjtttJqJE9P6Qn-eoinZGnJ

参数说明:

参数 是否必须 说明
grant_type 固定值 authorization_code
client_id 应用唯一标识,即应用注册时获得的 应用id
client_secret 应用的秘钥,即应用注册时获得的应用秘钥
code 授权码,即第一步应用回调地址获得的 code 参数值
redirect_uri 应用回调地址

返回结果:

{
  "access_token": "fDanz0ydkCqVsgSoze7mrCnwJIsN0dL",
  "expires_in": "1209600",
  "scope": "base_api",
  "refresh_token": "HhbiRKzjVnKdvGfmuGjvh3Clm4AIMqV8",
  "token_type": "Bearer"
}

参数说明:

参数 说明
access_token 下发的token
expires_in 有效期
scope 作用域
refresh_token 刷新令牌
token_type 令牌类型

四、获取用户信息

获取用户信息。

请求⽅式: GET/POST(HTTPS或HTTP

请求地址: https://sso.xxx.edu.cn/oauth2.0/profile

注:https方式类似。

请求头:

Content-Type:from-data

注:使用get请求时,不用添加请求头

请求参数:

form表单post请求

示例:
access_token:AT-98-fDanz0ydkCqVsgSoze7mrCnwJIsN0dL

get请求

示例:
https://sso.xxx.edu.cn/oauth2.0/profile?access_token=AT-98-fDanz0ydkCqVsgSoze7mrCnwJIsN0dL

参数说明:

参数 是否必须 说明
access_token 令牌

返回结果:

{
  "active": true,
  "attributes": {
    "DQZTM": "在任",
    "DWH": "网络信息与综合服务中心",
    "DWM": "306300",
    "GH": "20042020",
    "PRZWMC": "工程师",
    "SFLBDM": "01",
    "XBM": "男性",
    "XM": "xxxx",
    "SFLBMC": "xxxx"
  },
  "id": "20042020",
  "clientId": "xxxxxx"
}

参数说明:

参数 说明
id 用户名
clientId 应用id
attributes 用户属性列表
XM 姓名
XBM 性别
SFLBDM 身份类别代码
PRZWMC 职位名称
GH 工号
DWM 单位名
DWH 单位号
DQZTM 当前状态
SFLBMC 身份类别名称
ZWJBMC 职位级别名称
©2025 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2026-05-07 11:12:08

results matching ""

    No results matching ""