公众号网页授权后获取用户基本信息出现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超时的原因啊。哪位大神知道是什么问题?

阅读 62.5k
10 个回答

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

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 好像有两种.
第一种是全局的和用户无关的access_token, 拿着appid和appsecret去获取(/cgi-bin/token)
第二种是和具体用户有关的,拿着appid和appsecret和code去获取(/sns/oauth2/access_token)
获取用户基本信息(/sns/userinfo)需要的是第二种token

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

新手上路,请多包涵

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

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

新手上路,请多包涵

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

新手上路,请多包涵

顶一下按照答主的回答果然是接口弄错了,一定要注意是网页授权access_token还是基础支持access_token,整了快一天了,又不方便调试,而且如果不看答主的回答估计是找不出问题出这了

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏