网上资料太少了,只能啃官网文档


1. 前言

课程设计需要使用把项目部署到微信中使用。我实现的效果就是在企业微信里面可以直接点击应用然后使用(仅限于内部成员,外部成员无法访问)。

说明:成为企业微信开发者点击没反应 企业微信开发者权限_微信,和成为企业微信开发者点击没反应 企业微信开发者权限_扫码登录_02

成为企业微信开发者点击没反应 企业微信开发者权限_扫码登录_03

2. 注册账号

https://work.weixin.qq.com/ 并且登录

手机上最好也同时下载“企业微信”app

进入应用管理可以看见成为企业微信开发者点击没反应 企业微信开发者权限_小程序_04

成为企业微信开发者点击没反应 企业微信开发者权限_扫码登录_05

3. 网页授权

配置好域名(没有就用内网穿透也行)

成为企业微信开发者点击没反应 企业微信开发者权限_微信_06


这里微信会请求你的http://abcdf.com/WW_verify_agFRemnEVeHcITzc.txt

你需要返回下载文件里的内容即可

成为企业微信开发者点击没反应 企业微信开发者权限_小程序_07


后端代码

我直接写死了,反正不会变(每个人的校验码都不一样)

@Api(tags = "微信授权认证接口")
@Controller
public class OAuthController {

    @ApiOperation("微信域名验证接口")
    @ResponseBody
    @GetMapping("/WW_verify_agFRemnEVeHcITzc.txt")
    public String authentication() {
        System.out.println("域名认证成功");
        return "agFRemnEVeHcITzc";
    }
}

4. 常规功能

发送消息,接受消息,自动回复这些和公众号是一样的

工作台主页,和自定义菜单里面就可以跳转到自己的web页面了,这样就成功把web应用嵌入到企业微信中了。

用户可以直接在企业微信中访问自己的web应用

成为企业微信开发者点击没反应 企业微信开发者权限_扫码登录_08

5. 微信授权登录

https://work.weixin.qq.com/api/doc/90000/90135/91020 看文档吧
使用OAuth2实现扫码登录,就是有几个坑

成为企业微信开发者点击没反应 企业微信开发者权限_官网文档_09


java后端代码,用户访问我的localhost:8080/user,就会跳转到微信的扫码登录界面(这里的url需要根据官网文档拼接一下),当扫码登录完成后,会重定向到我们指定的地址REDIRECT_URI(注意需要encoder)。我这里就直接重定向到主页了,中间的service我就删去了。

@Api(tags = "微信授权认证接口")
@Controller
public class OAuthController {

    @ApiOperation("微信域名验证接口")
    @ResponseBody
    @GetMapping("/WW_verify_agFRemnEVeHcITzc.txt")
    public String authentication() {
        System.out.println("域名认证成功");
        return "agFRemnEVeHcITzc";
    }

    @ApiOperation("微信扫码登录接口")
    @GetMapping("/user")
    public void qr(HttpServletResponse response) throws IOException {
        String REDIRECT_URI= URLEncoder.encode("http://egssen.natappfree.cc","UTF-8");
        String url="https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wwc0cc67cb47bedf03&agentid=1000002&redirect_uri="+REDIRECT_URI;
        response.sendRedirect(url);
    }
    @ApiOperation("重定向接口")
    @GetMapping("/")
    public String qq(@RequestParam("code") String code,@RequestParam("state") String state,@RequestParam("appid") String appid){
        System.out.println("用户code="+code);
        return "home";
    }
}

6. 其他

如何获取用户信息,
术语介绍

corpid userid 部门id tagid agentid secret access_token 回调配置…

看官网文档,讲的很清楚

https://work.weixin.qq.com/api/doc/90000/90135/90664