公众号网页授权后获取用户基本信息出现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超时的原因啊。哪位大神知道是什么问题?
回复内容:
首先我确定我的公众号是认证的服务号,而且已经设置了与当前访问的域名一样的公众号授权域名,而且授权的方式是出现提示框的那种(即可获取用户信息的)而非静默授权。
我的开发流程:
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过期呢