【前提】
1)自己的网站必须在微信客户端里打开,可以不用关注公众号
实际上就是授权给第三方应用的意思,你自己的公众号就是作为第三方应用看待,链接里包含了公众号的appid等唯一信息,所以很容易就能给当前创建在此公众号下的唯一openid
2)snsapi_base:只能获取到openid,无法获取到具体的昵称等信息,所以这里获取到的access_token值暂无用处
3)snsapi_userinfo:用户点击允许授权后,可以获取到用户openid和昵称等信息
如果是在关注公众号情况下,那么在公众号里引导用户点击授权链接,那么也是无感获取用户昵称等信息,一般认证服务号都是这个解决方案
比如:通过底部菜单引导点击跳转到授权链接,然后回调到自己的网址获取用户信息
- 个人未认证订阅号无此权限
开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名
【授权方式】
1)静默授权
scope=snsapi_base
用户无感知,可能会感觉到两次跳转
用户直接访问微信授权地址,直接跳转到自己网站,可获取到openid
不弹出授权页面,直接跳转,只能获取用户openid
2)主动同意授权
scope=snsapi_userinfo
用户无需关注,在同意后亦可获取用户信息
对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知
弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息
3)与公众号交互或关注
用户关注或者关注后与公众号产生互动,微信都会把含由openid的xml字符串发送到自己的接口里
【步骤】
1)引导用户进入授权页面同意授权,获取code
因为有appid公众号唯一编号,所以即时用户还没关注,也是可以知道在这个公众号里的唯一编号
2)通过code换取网页授权access_token(与基础支持中的access_token不同)
设置好的回调地址,比如:自己的服务器地址-http://www.xxx.com/Home/Index,在这里地址里可以接收一个code的参数,由微信授权完成后带上code回调到设置的地址里
3)如果需要,开发者可以刷新网页授权access_token,避免过期
4)通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
【获取用户信息 - 在关注公众号点击底部菜单进入第三方网址情况下】
1)Post-Request地址
https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN
2)参数
appid:公众号唯一凭证
redirect_uri:回调地址,自己的网站地址
response_type:code
scope:snsapi_base/snsapi_userinfo
state:STATE
3)响应参数
access_token :token值
expires_in:有效时间(有效期为2小时)
refresh_token:刷新的token
openid:用户唯一编号(此时可以进行用户注册,有唯一编号,授权同意后再进行昵称等信息更新)
scope:授权类型
可以输出内容到txt文本查看,同时也可以创建表保存起来
【认证服务号 - 网页授权设置页面】
域名要求ICP备案,不支持IP地址、端口号及短链域名
未完待续。。。