概览:
具体:
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=${ACCESS_TOKEN}`;
无论是群发图文消息,还是群发图片、视频、语音等消息,关键都是拿到 media_id,上面群发图文消息是通过 media/uploadnews
拿到 media_id,而其他消息类型可以通过素材管理接口拿到 media_id,文档有这些非图文消息的群发说明。
素材管理接口可以分为临时素材管理接口、永久素材管理接口。
media/upload,媒体文件在微信后台保存时间为 3 天,即 3 天后 media_id 失效。
const ACCESS_TOKEN = "";
const TYPE = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/upload?access_token=${ACCESS_TOKEN}&type=${TYPE}`;
material/add_news:新增永久图文,貌似下架了?文档找不到这个 API。
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=${ACCESS_TOKEN}`;
media/uploadimg:上传图文消息内的图片获取 URL。
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=${ACCESS_TOKEN}`;
material/add_material:新增其他类型永久素材,包括图片。
const ACCESS_TOKEN = "";
const TYPE = "";
const api = `https https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=${ACCESS_TOKEN}&type=${TYPE}`;
通过素材管理 API 获取到的图片、语音的 media_id 可以直接用 mass/sendall
推送出去,但是获取到的视频 media_id 不能直接推送出去,还需要用 media/uploadvideo
这个 api 把这个 media_id 转换成另一个 media_id。
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=${ACCESS_TOKEN}`;
//把下面的数据 post 到 api
const body = {
media_id: "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",
title: "TITLE",
description: "Description",
};
//api 返回的数据,这次拿到的 media_id 才可以群发
const result = {
type: "video",
media_id: "IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
created_at: 1398848981,
};
临时素材都是 media/upload
上传
永久素材是 material/add_news
、material/add_material
,media/uploadimg
不确定是永久还是临时,但是文档是把它放在永久的;
群发的内容是这样获取 media_id 的:
media/uploadnews
(文章内的图片用 media/uploadimg
获取 url)或 material/add_news
;media/upload
或 material/add_material
,再 media/uploadvideo
;media/upload
或 material/add_material
media/upload
或 material/add_material
发布用 mass/sendall
,传入通过上一个步骤获取 media_id
所以无非就是 material/
、media/
、mass/
三类 api,其中 material 后面都有 add,media 后面都有 upload。media/uploadimg
和 material/add_material
都可以返回 URL,返回 URL 的可能就是永久素材吧。
注意 media/uploadnews
、media/uploadimg
、mass/send
等接口需要认证过的公众号才能用。
有一个问题,通过 media/uploadnews
和 material/add_news
获取的 media_id 一样吗?