Delphi 开发微信公众平台 (二) 用户管理
程序员文章站
2022-03-03 08:18:47
一、用户标签管理 开发者可以使用用户标签管理的相关接口,实现对公众号的标签进行创建、查询、修改、删除等操作,也可以对用户进行打标签、取消标签等操作。 1、创建标签 2、获取标签 3、删除标签 4、编辑标签 二、设置用户备注名 三、获取用户基本信息(UnionID机制) 在关注者与公众号产生消息交互后 ......
一、用户标签管理
开发者可以使用用户标签管理的相关接口,实现对公众号的标签进行创建、查询、修改、删除等操作,也可以对用户进行打标签、取消标签等操作。
1、创建标签
/// <summary> /// 创建标签 /// </summary> /// <remarks> /// 一个公众号,最多可以创建100个标签。 /// </remarks> function createtag(const atagname: string): twechattag;
function twechatrequest.createtag(const atagname: string): twechattag; var content, response: tjsonobject; begin result := nil; content := tjsonobject.create.addpair('tag', tjsonobject.create.addpair('name', atagname)); try response := httppost(content, 'tags/create'); try if parseresponse(response) then begin result := tjson.json2object<twechattag>(response.values['tag'].tojson); result.count := 0; end; finally freeandnil(response); end; finally freeandnil(content); end; end;
2、获取标签
/// <summary> /// 获取公众号已创建的标签 /// </summary> function gettags: twechattags;
function twechatrequest.gettags: twechattags; var jsonstring: string; response: tjsonobject; begin response := httpget('tags/get'); try if parseresponse(response) then begin jsonstring := response.getvalue<tjsonarray>('tags').tojson; result := tjson.json2object<twechattags>(jsonstring); end; finally freeandnil(response); end; end;
3、删除标签
/// <summary> /// 删除标签 /// </summary> /// <remarks> /// 当某个标签下的粉丝超过10w时,后台不可直接删除标签。 /// 此时,开发者可以对该标签下的openid列表 , /// 先进行取消标签的操作,直到粉丝数不超过10w后,才可直接删除该标签。 /// </remarks> function deletetag(atagid: integer): boolean;
function twechatrequest.deletetag(atagid: integer): boolean; var content, response: tjsonobject; begin content := tjsonobject.create.addpair('tag', tjsonobject.create.addpair('id', tjsonnumber.create(atagid))); try response := httppost(content, 'tags/delete'); try result := parseresponse(response); finally freeandnil(response); end; finally freeandnil(content); end; end;
4、编辑标签
/// <summary> /// 编辑标签 /// </summary> function updatetag(atagid: integer; anewname: string): boolean;
function twechatrequest.updatetag(atagid: integer; anewname: string): boolean; var content, response: tjsonobject; begin content := tjsonobject.create.addpair('tag', tjsonobject.create .addpair('id', tjsonnumber.create(atagid)) .addpair('name', anewname) ); try response := httppost(content, 'tags/update'); try result := parseresponse(response); finally freeandnil(response); end; finally freeandnil(content); end; end;
二、设置用户备注名
/// <summary> /// 设置用户备注名 /// </summary> /// <remarks> /// https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140838 /// </remarks> function updateremark(const aopenid, aremark: string): boolean;
function twechatrequest.updateremark(const aopenid, aremark: string): boolean; var content, response: tjsonobject; begin content := tjsonobject.create.addpair('openid', aopenid).addpair('remark', aremark); try response := httppost(content, 'user/info/updateremark'); try result := parseresponse(response); finally freeandnil(response); end; finally freeandnil(content); end; end;
三、获取用户基本信息(unionid机制)
在关注者与公众号产生消息交互后,公众号可获得关注者的openid(加密后的微信号,每个用户对每个公众号的openid是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据openid获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用unionid机制来满足上述需求。
unionid机制说明:
开发者可通过openid来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
/// <summary> /// 获取单个用户基本信息 /// </summary> function getuserinfo(const aopenid: string): twechatuser;
function twechatrequest.getuserinfo(const aopenid: string): twechatuser; var response: tjsonobject; begin result := nil; response := httpget('user/info', format('openid=%s&lang=zh_cn', [aopenid])); try if parseresponse(response) then result := twechatuser.fromjsonstring(response.tojson); finally freeandnil(response); end; end;
上张效果图