PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

公众号网页授权后获取用户基本信息出现access_token非法提示

原创
2016-06-06 20:27:11 1938浏览

首先我确定我的公众号是认证的服务号,而且已经设置了与当前访问的域名一样的公众号授权域名,而且授权的方式是出现提示框的那种(即可获取用户信息的)而非静默授权。
我的开发流程:
1、调用接口http://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号APPID&redirect_uri=我的地址&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect ,并成功获取code。
2、利用code获取access_token,调用https://api.weixin.qq.com/sns/oauth2/access_token?appid=公众号APPID&secret=公众号APPSECRET&code=CODE&grant_type=authorization_code,并成功获取access_token,refresh_token,openid等数据
3、利用上面获得的access_token获取用户https://api.weixin.qq.com/cgi-bin/user/info?access_token=上面获取的access_token&openid=上面获取的openid&lang=zh_CN,但这里获取到的信息是错误的信息,errcode是40001,errmsg:invalid credential,access_token is invalid or not latest hint:[25XmA020.....]。

步骤看上去像是正确的,为什么通过授权的access_token都不能获取到用户信息?我可是一获取到access_token马上用来获取用户信息的,应该不会是access_token超时的原因啊。哪位大神知道是什么问题?

回复内容:

首先我确定我的公众号是认证的服务号,而且已经设置了与当前访问的域名一样的公众号授权域名,而且授权的方式是出现提示框的那种(即可获取用户信息的)而非静默授权。
我的开发流程:
1、调用接口http://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号APPID&redirect_uri=我的地址&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect ,并成功获取code。
2、利用code获取access_token,调用https://api.weixin.qq.com/sns/oauth2/access_token?appid=公众号APPID&secret=公众号APPSECRET&code=CODE&grant_type=authorization_code,并成功获取access_token,refresh_token,openid等数据
3、利用上面获得的access_token获取用户https://api.weixin.qq.com/cgi-bin/user/info?access_token=上面获取的access_token&openid=上面获取的openid&lang=zh_CN,但这里获取到的信息是错误的信息,errcode是40001,errmsg:invalid credential,access_token is invalid or not latest hint:[25XmA020.....]。

步骤看上去像是正确的,为什么通过授权的access_token都不能获取到用户信息?我可是一获取到access_token马上用来获取用户信息的,应该不会是access_token超时的原因啊。哪位大神知道是什么问题?

获取用户信息的接口需要进行微信认证

你报的这个错误应该是access_token失效导致的,是不是用什么缓存来保存access_token了,那样的话,建议先清空下缓存再试试。http://www.weixin.com

我再强调一遍,网页授权获取用户信息的接口是

http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

而不是

http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html

网页授权的 AccessToken 和获取用户信息的 AccessToken 不是一个东西。

也就是你上面的第 3 步的接口地址应是

https://api.weixin.qq.com/sns/userinfo

而不是

https://api.weixin.qq.com/cgi-bin/user/info

参考:https://github.com/thenbsp/wechat

10/6 更新

真不知道踩的人是什么心理,也不知道踩的人有没有仔细查看管方文档,如果觉得我的回答不对,请站指出错误,谢谢!

access_token自己缓存下,你用了一个过时的

明明expiredate是7200秒,但是没到2小时accesstoken就过期了,有什么办法去判断accesstoken过期呢

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。