微信公众号开发
授权获取信息
前端引导
测试账号需要设置回调地址
前端进入首页时引导用户打开下面链接
javascript
https://open.weixin.qq.com/connect/oauth2/authorize?
appid=APPID&
redirect_uri=REDIRECT_URI&
response_type=code&
scope=SCOPE&state=STATE#wechat_redirect
参数含义:
appid | 公众号的唯一标识 |
---|---|
redirect_uri | 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理 |
response_type | 返回类型,请填写code |
scope | 应用授权作用域(snsapi_base |
state | 一些自定义参数 |
wechat_redirect | 无论直接打开还是做页面302重定向时候,必须带此参数 |
注意:
- 回调地址 redirect_uri 使用
encodeURI
处理、 - 顺序不能乱,scope=snsapi_userinfo 排在 response_type=code 的后面
- scope
- snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid
- snsapi_userinfo: 弹出授权页面,可通过openid获取用户信息
当用户同意授权时,微信自动重定向至 redirect_uri
,同时会带上 code 参数
获取 access_token
通过上面带来的 code 信息,传递给后端服务,后端服务根据下方接口获取到授权信息
javascript
https://api.weixin.qq.com/sns/oauth2/access_token?
appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回如下数据格式
json
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
获取用户信息
如果授权作用域为 snsapi_userinfo
javascript
https://api.weixin.qq.com/sns/userinfo?
access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
返回如下数据格式
json
{
"openid":" OPENID",
"nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
自定义菜单
个人订阅号不能自定义菜单,自定义菜单需要公众号认证
通过请求接口 POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
请求格式:
json
{
"button":[
{
"type":"view",
"name":"Mondo",
"url": "https://imondo.cn"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"miniprogram",
"name":"wxa",
"url":"http://mp.weixin.qq.com",
"appid":"wx286b93c14bbf93aa",
"pagepath":"pages/lunar/index"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}