首页 > 编程语言 >使用 WxJava 发布公众号图文

使用 WxJava 发布公众号图文

时间:2022-10-27 14:14:32浏览次数:64  
标签:String 草稿 微信 接口 公众 素材 WxJava 图文

一个 Demo,记录一下发布公众号图文时需要用到的接口

公众号开发时需用到的一些网站


1. 下载 WxJava 公众号 Demo

git clone https://github.com/Wechat-Group/weixin-java-demo-springmvc.git

2. 用微信扫码登录测试账号申请平台

修改 application.yml 文件的 appId 和 secret 值为网页上显示的,剩下的 token 和 aesKey 暂时不用管

网页上还有一个接口配置信息修改,需要填写接口配置信息,如果你有自己的域名及内网穿透工具,可以自行配置,如果没有,可以去 natapp 申请一个免费的

WxJava 提供的 Demo 验证路径已经写好,按照下面的方式填写,host 为 natapp 申请的域名, appID 和 token 为 yml 里面的配置

  • URL: http://{host}/wx/portal/{appID}
  • Token: token

启动 demo 项目,如果没有问题,在网页上提交,微信会发验证请求到 demo,然后验证成功

3. 开发图文发布接口

找到微信的发布接口 ,查看后,发布图文需要下面的前置步骤

  • 要先将图文素材以草稿的形式保存,选择要发布的草稿 media_id 进行发布
  • 新建草稿接口 ,提交参数的必填项 thumb_media_id 封面图片素材id 需要调用先调用素材接口
  • 素材管理接口,分为临时素材接口和永久素材接口,永久素材接口又分成两个,上传图文消息内的图片获取URL新增其他类型永久素材
    • 临时素材接口,目前不用关注
    • 永久素材接口
      • 上传图文消息内的图片获取URL,不占用公众号的素材库中图片数量的100000个的限制
      • 新增其他类型永久素材,保存总数量有上限:图文消息素材、图片素材上限为100000,其他类型为1000

有了上面的接口整理,我们可以理清思路,对于一篇图文,需要把封面上传新增其他类型永久素材,图文内的图片通过上传图文消息内的图片获取URL接口上传,防止占用容量

然后新建草稿,拿到图文草稿的 media_id,最后通过图文的 media_id 发布图文

4.编写代码

新建一个 TestController,编写第三步提到的逻辑

@AllArgsConstructor
@RestController
@RequestMapping("/test")
public class TestController {
    private final WxMpService wxService;

    //上传永久素材(占用容量)
    @GetMapping("/imgId")
    public String imgId() throws WxErrorException {
        String image = "C:\\Users\\xxx\\Pictures\\test.jpg";

        //永久图片 ID
        WxMpMaterial wxMpMaterial = new WxMpMaterial("img", new File(image), "图片", "图片");
        WxMpMaterialUploadResult wxMediaImgUploadResult = wxService.getMaterialService().materialFileUpload(WxConsts.MediaFileType.IMAGE, wxMpMaterial);
        return wxMediaImgUploadResult.getMediaId();
    }

    //永久图片链接(不占用容量)
    @GetMapping("/imgUrl")
    public String imgUrl() throws WxErrorException {
        String image = "C:\\Users\\xxx\\Pictures\\test.jpg";

        //永久图片链接
        WxMediaImgUploadResult wxMediaImgUploadResult = wxService.getMaterialService().mediaImgUpload(new File(image));
        return wxMediaImgUploadResult.getUrl();
    }

    //草稿
    @GetMapping("/draft")
    public String draft() throws WxErrorException {
        String imgMediaId = "";
        String imgUrl = "";

        WxMpAddDraft wxMpAddDraft = new WxMpAddDraft();
        List<WxMpDraftArticles> wxMpDraftArticlesList = new ArrayList<>();
        WxMpDraftArticles articles = new WxMpDraftArticles();
        articles.setTitle("标题");
        articles.setContent(String.format("正文<div><img src=\"%s\"> </div>", imgUrl));
        articles.setThumbMediaId(imgMediaId);
        wxMpDraftArticlesList.add(articles);
        wxMpAddDraft.setArticles(wxMpDraftArticlesList);
        WxMpAddDraft draftFromat = WxMpAddDraft.fromJson(wxMpAddDraft.toJson());

        String mediaId = wxService.getDraftService().addDraft(draftFromat);
        return mediaId;
    }

    //发布
    @GetMapping("/submit")
    public String submit() throws WxErrorException {
        String mediaId = "";
        String submit = wxService.getFreePublishService().submit(mediaId);
        return submit;
    }
}
  • 调用 /test/imgId 得到返回封面图片素材 id
  • 调用 /test/imgUrl 得到图文里面的图片 url
  • 调用 /test/draft 提交草稿,注意把第一、二步调用得到的参数填入
  • 调用 /test/submit 发布图文,注意把第三步调用得到的参数填入
  • 一切正常后控制台会输出发布成功图文链接

5.其他一些内容

通过微信提供的网页端管理平台,可以在图文中插入视频,那么可以通过接口发布带视频的图文吗?

不行,起码目前(2022.10.07)不可以,通过接口上传的视频 微信反馈 目前没有审核流程,只会审核通过网页上传的视频,所以是无法发布的。

如果在图文中插入审核后的视频,可以通过接口发布带视频的图文吗?

查了一下资料,应该是可以的,不过不能用 video 标签,需要自己拼接视频 html,

思路是通过获取草稿接口,查看网页端新建的带视频的草稿,观察返回的 html 是怎么处理的,照葫芦画瓢,

不过不建议用,不稳定,因为微信接口文档没有正式提供带视频的图文发布接口

标签:String,草稿,微信,接口,公众,素材,WxJava,图文
From: https://www.cnblogs.com/iyiluo/p/16832001.html

相关文章