企业微信获取access_token时遇到"errcode":40001的问题的解决
案例一
在做企业微信开发时遇到的问题日志:
问题如下:
HTTP/1.1 200 OK Connection: keep-alive Error-Code: 40001 Error-Msg: invalid credential, hint: [1507881186_cb1093c9bcaedaf108b7ce2ea10f2d38] Content-Type: application/json; charset=UTF-8 Content-Length: 100
{"errcode":40001,"errmsg":"invalid credential, hint: [1507881186_cb1093c9bcaedaf108b7ce2ea10f2d38]"}
根据
全局错误码
的说明:
错误码 错误说明 排查方法
40001 不合法的secret参数 secret在应用详情/通讯录管理助手可查看
排查secret的取值也没有错啊。就郁闷了。
最后发现问题:是corpid写错了。把企业id写成了应用id。
因为“全局错误码”里没有提到corpid错误了会造成40001错误,所以一直以为是scerent的错。
案例二:微信获取用户信息的两个接口和两个ACCESS_TOKEN
有一段时间没有搞微信开发了 ,今天突然要改一下程序! 回头一看 微信的帮助文档太tm的稀烂的,太难懂了,这做个笔记以后看着方便
微信有2个ACCESS_TOKEN,
1、基础接口的token 获取接口是
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
2、用户网页授权access_token 获取接口地址是
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
网页授权access_token 需要通过code去获取
code是怎么来的,是通过调用下面接口来获取的
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
注意这个接口中有个参数scope 默认有2个值snsapi_base和snsapi_userinfo,这个接口会根据scope 来生成不同的code并且获取不同作用的access_token ,不管scope传什么值都能在得到对应access_token的同时得到open_id, 如果你只需要得到opend_id 那使用snsapi_base参数到此结束了,如果需要获取用户的其他信息比如 昵称 地址 就要snsapi_userinfo 会弹出授权
3 怎么获取用户信息那就调用下面接口
https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN
很明显这个接口中的access_token是第二步获取code的时候scope 参数传snsapi_userinfo来换取的access_token
4 微信还有一个获取用户基本信息的接口 但是 这个接口需要你关注了公众号
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
(此接口的access_token 是接口基础调用access_token 不是网页授权access_token)
微信的解释:是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。