本文相关代码地址:github 原文链接: 原文链接
测试账号地址:测试账号
授权获取信息
前端引导
测试账号需要设置回调地址
前端进入首页时引导用户打开下面链接
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 | snsapi_userinfo ) |
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 信息,传递给后端服务,后端服务根据下方接口获取到授权信息
https://api.weixin.qq.com/sns/oauth2/access_token?
appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回如下数据格式
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
获取用户信息
如果授权作用域为 snsapi_userinfo
https://api.weixin.qq.com/sns/userinfo?
access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
返回如下数据格式
{
"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
请求格式:
{
"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"
}]
}]
}
具体参数可以查看文档详情
以上都可以使用微信提供的调试工具来对自己接口进行调试
欢迎关注公众号,大家一起共同交流和进步。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。