网页授权
该授权方式于第三方应用获取用户授权,进而读写用户的问卷数据,团队开发者无需关注。
#
第一步:用户同意授权,获取 code#
构造网页授权链接https://open.wj.qq.com/connect/oauth2/authorize?appid={APPID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=snsapi_user&state={STATE}#wj_redirect
#
参数说明参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
appid | string | 是 | 开放平台颁发的应用ID |
redirect_uri | string | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
response_type | string | 是 | 返回类型,此时固定为:code |
scope | string | 是 | 应用授权作用域,获取用户授权填写:snsapi_user |
state | string | 否 | 重定向后会带上state参数,应用可以填写a-zA-Z0-9的参数值,长度不可超过128个字节 |
#wj_redirect | 是 | 固定 |
备注:用户点击"确定"后,页面将跳转至 redirect_uri?code={CODE}&state={STATE}
#
第二步: 通过 code 换取网页授权 access_token注意!
- 这里换取的 access_token 与用户资源相关,安全等级非常高,必须只保存在服务器,不允许传给客户端。
- 后续通过 access_token 获取用户数据等步骤,也必须从服务器发起。
- access_token 有效时间为3天,过期后须重新发起授权。
#
接口地址GET https://open.wj.qq.com/api/oauth2/access_token?appid={APPID}&secret={SECRET}&code={CODE}&grant_type=authorization_code
#
参数说明参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
appid | string | 是 | 开放平台颁发的应用ID |
secret | string | 是 | 开放平台颁发的应用秘钥 |
code | string | 是 | 填写第一步返回的 code,该 code 成功换取一次 access_token 后失效 |
grant_type | string | 是 | 固定为 authorization_code |
#
返回说明参数名 | 类型 | 描述 |
---|---|---|
access_token | string | 授权码 |
refresh_token | string | 用于刷新授权码,有效期为30天 |
expires_in | integer | 有效时间,默认为3天 |
openid | string | 用户授权给当前应用的唯一标识,openid 可获得用户列表等数据 |
{ "code": "OK", "error": { "type": "" }, "data": { "access_token":"ACCESS_TOKEN", "refresh_token":"REFRESH_TOKEN", "expires_in": 259200, "openid":"OPENID" }, "request_id": "6cda53f4-d0fa-41a9-95a0-77ea32c97f1e"}
#
第三步:使用 access_token 请求读写用户数据在请求接口加上 ?appid={APPID}&access_token={ACCESS_TOKEN}
例如获取用户的问卷详情:
GET https://open.wj.qq.com/api/surveys/{survey_id}?appid={APPID}&access_token={ACCESS_TOKEN}
个别接口需加上 ?openid={OPENID} 例如获取用户的问卷列表:
GET https://open.wj.qq.com/api/surveys?appid={APPID}&access_token={ACCESS_TOKEN}&openid={OPENID}
#
其他:刷新 access_token(如果需要)由于 access_token 有效期较短,当 access_token 超时后,可以使用 refresh_token 进行刷新,refresh_token 有效期为30天,当 refresh_token 失效之后,需要用户重新授权。
#
接口地址GET https://open.wj.qq.com/api/oauth2/refresh_token?appid={APPID}&refresh_token={REFRESH_TOKEN}&grant_type=refresh_token
#
参数说明参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
appid | string | 是 | 开放平台颁发的应用ID |
refresh_token | string | 是 | 填写第二步返回的 refresh_token |
grant_type | string | 是 | 固定为 refresh_token |
#
返回说明参数名 | 类型 | 描述 |
---|---|---|
access_token | string | 授权码 |
expires_in | integer | 有效时间,默认为3天 |
{ "code": "OK", "error": { "type": "" }, "data": { "access_token":"ACCESS_TOKEN", "expires_in": 259200 }, "request_id": "6cda53f4-d0fa-41a9-95a0-77ea32c97f1e"}
#
其他:获取授权用户信息#
接口地址GET https://open.wj.qq.com/api/oauth2/user?appid={APPID}&access_token={ACCESS_TOKEN}&openid={OPENID}
#
参数说明参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
appid | string | 是 | 开放平台颁发的应用ID |
access_token | string | 是 | 填写第二步返回的 access_token |
openid | string | 是 | 用户授权给当前应用的唯一标识 |
#
返回说明参数名 | 类型 | 描述 |
---|---|---|
openid | string | 用户授权给当前应用的唯一标识 |
nickname | string | 用户在腾讯问卷系统的昵称 |
avatar | string | 用户在腾讯问卷系统的头像 |