企业微信登录 code 获取不到及 invalid code 常见问题!ToB Dev常见问题系列!
最近关注到 企微开发者社区和 ToB Dev 公众号下的 企微开发同行群 经常有问企业微信登录 code 获取不到及 invalid code。
ToB Dev B端开发者社群已有二十多个群,一万多粉丝,在群里交流中积累了大量的企微开发过程中的问题。今天ToB Dev为大家整理出code 获取不到及 invalid code 大概率会出错的原因。
一,code获取不到
1,如果是vuejs hash模式,从登录到跳转到redirecturi,code会有时#号前,有时在#号后。如果在#号通过vuejs取路由参数是取不到code的。
注意:需要自己通过抓包或复制当前回调到redirecturi的地址看code在哪。
解决方案:解析url取出code即可。
code在#号前
https://xx.com/?code=uuqCXjoOvXMu-6Tj52lkg1-hjSe5W4QK7SNtPS5_hXU&state=1685694932#/pages/xxx
code在#号后
https://xx.com/#/pages/xxx?code=uuqCXjoOvXMu-6Tj52lkg1-hjSe5W4QK7SNtPS5_hXU&state=1685694932
解析url取出参数方法自行百度一大堆,如
export function queryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
2,自己程序在从登录到跳转到redirecturi后,或者路由及权限校验等等,在跳转到redirecturi前或者后经过了处理,导致不能直接到redirecturi或者到了redirecturi后又跳转走了,会导致取不到code。
解决方案:自己抓包或者追踪url跳转,看有没有到redirecturi或者到了后跳走了。
二,invalid code
1,如果是小程序登录
不管理自建/自建代开发/第三方应用,前后端的接口必须是配套使用,前端使用wx.qy.login,后端使用企业微信小程序文档中要求的对应后端的接口(有人用oauth登录获取用户信息的还有扫码/pc扫码登录及快捷登录获取用户信息的 这个不行)。
附第三方应用小程序登录后端接口文档地址示例
2,如果前后端登录接口没问题
a,一般是用错token,仔细看文档要求用的是什么token,然后追踪后端获取token用的是什么企业的什么应用的配置。
b,前后端企业不一致,前端当前企业微信是在a公司,后端用了b公司的配置获取的token或者其它信息。(多个公司弄混,配置混乱错误)
c,前后端应用不一到处,前端当前企业微信是a应用,后端用了b应用的信息。(多个应用测试弄混,应用配置混乱错误)
附官方社区查询token权限入口
https://developer.work.weixin.qq.com/document/path/92426
小程序登录流程