微信网页授权

实现h5页面获取微信用户基本信息(无需关注公众号)

一、准备工作

1.微信公众号官网,设置 网页安全域名
开发 > 接口权限 > 网页服务 > 网页授权 > 网页授权获取基本用户信息
注意:网页安全域名需要微信认证,普通用户没有设置网页安全域名的入口,一般使用公司提供的已授权的公众号
2.开发者ID(AppID)和开发者密码(AppSecret)
开发 > 基本配置
注意:AppSecret只能重置,如果重置则影响所有使用该AppSecret的接口

二、调起用户授权页面,获取code

请求方法

window.location.href = https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号的AppID&redirect_uri=回调地址&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
// 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

注意:回调地址的域名必须为网页授权域名,且必须以域名结尾,否则,接收不到code参数。
例如:http://www.baidu.com/test 接收不到code参,http://www.baidu.com 则可以接收到

以上为前端负责部分,前端只负责拿到code即可,由于公众号的secret和获取的token安全级别都非常高,只能保存到服务器,不允许传给客户端,所以后续工作只能从服务器端发起。
三、通过code获取access-token

后端服务请求方法

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=开发者密码(AppSecret)&code=前端传回的code&grant_type=authorization_code

返回结果为

{ "access_token":"ACCESS_TOKEN",
"expires_in":7200, //access_token接口调用凭证超时时间,单位(秒)
"refresh_token":"REFRESH_TOKEN", //用户刷新access_token
"openid":"OPENID",//用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
"scope":"SCOPE" }

access_token有效期较短,可以用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。

请求方法

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=上面接口返回的refresh_token

四、拉取用户信息

终于到想要的信息了,请求方法

http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

返回结果

{ "openid":"用户唯一标识",
" nickname": "用户昵称",
"sex":"用户性别", // 1为男性,2为女性,3未知
"province":"个人资料-省份"
"city":"个人资料-城市",
"country":"国家,中国为CN",
"headimgurl": "用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。",
"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
"unionid": "只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。"
}

将此信息返回给前端,完成。
以上信息基于scope值为snsapi_userinfo,微信官方文档非常详细可参考微信网页授权

你可能感兴趣的:(微信网页授权)