OAuthor统一认证(页面跳转方式)

微信公众号要求OAuthor 2.0认证只能从一个域名,绑定在微读客平台上的所有微信公众号目前都是使用cms.weiduke.com,这样会给其他域的调用并获取openid带来困难,导致无法使用。

由微读客平台对微信公众号的OAuthor认证和token进行合理的管理,对外提供统一的接口,供其他项目的域调用。

 

OAuthor 2.0认证

请求地址如下:

https://cms.weiduke.com/index.php?g=Wap&m=Api4WeixinOpenid&a=getopenid&token=cccccc&returl=xxxxxxx

此接口供其他网站调用,完成Oauthor2.0的认证过程,因为微信公众号接口限制了该认证只能在一个域名内完成,使用此方法支持其他域名下的网站获取网页访问用户的openid。

需要提供两个参数:

(1)token:微信公众号绑定到微读客平台后分配给其的唯一参数值。

(2)returl:是认证完成之后要跳转过去的网址,应该是http打头的。

 

如果还需要同时获取用户的头像和昵称,即提示微信用户授权,则多带一个参数:

(3)scope: snsapi_userinfo

 

微读客平台收到该地址请求后,经过若干次页面跳转,成功获取openid之后,会在returl网址上追加两个参数:

(1)openid:微信号的openid;

(2)check:是微信用户openid微信公众号appid、和字符串常量“cms.weiduke.abot.cn” 三个变量拼接后做md5,形式如:$weixin_openid.$this->__appid.'cms.weiduke.abot.cn' 。

 

获取头像和昵称

如果设置了scope为snsapi_userinfo,在成功回调之后,可以在服务器端发起请求获取openid对应的头像和昵称,以及性别、所在城市等属性,请求的API接口为:

https://cms.weiduke.com/openapi/WeixinMp/get_userinfo

 

可以使用以下两种形式的参数,加上openid

序号参数说明
1weiduke_idweiduke_token值
2weiduke_secretweiduke_secret值
如果公众号是通过微信第三方平台“延誉宝CMS”授权的,建议使用这组参数,可以更好的保护公众号的app secret。
序号参数说明
1appid公众号的appid
2appsecret公众号的appsecret
使用这两个参数的前提是将延誉宝CMS服务器的IP地址放在公众号开发接口的IP白名单中。

 

安全设置

如果带有openid和check两个参数的网址被其他人点击,会造成获取到的openid结果不正确,如果您的系统中以openid做为用户身份的唯一认证标志,则会造成用户身份资料泄露等风险。因此,建议调用的时候增加安全机制,具体如下:

(1)向请求网址跳转之前,写cookie,设置时间为5~10秒;

(2)收到带有openid和check的请求,先检查cookie中是否有值,如果没有,则可能是直接点击这类网址进入的,不去处理;如果cookie有值,则将cookie清空,再去做后续的处理。

 

yanyu

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: