Delphi 开发微信公众平台 (二)- 用户管理
一、用户标签管理
开发者可以使用用户标签管理的相关接口,实现对公众号的标签进行创建、查询、修改、删除等操作,也可以对用户进行打标签、取消标签等操作。
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 := ;
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;
上张效果图

Delphi 开发微信公众平台 (二)- 用户管理的更多相关文章
- Delphi 开发微信公众平台 (三)- 获取微信服务器IP地址
如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息. 接口调用请求说明 http 请求方式: GET https:/ ...
- Delphi 开发微信公众平台 (一)- 定义数据结构
先定义数据类型: unit rtcMW.Wechat.Types; interface uses Generics.Collections, Rest.Json, System.Json.Serial ...
- 使用Java开发微信公众平台(二)——消息的接收与响应
上一篇文章(http://www.jerehedu.com/fenxiang/171807_for_detail.htm )中,我们学习了使用Java语言开发微信公众平台的第一部分——环境搭建与开发接 ...
- Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付)
http://www.cnblogs.com/devinlee/p/4565933.html Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付) 关注作者 ...
- [c#]asp.net开发微信公众平台(1)数据库设计
开发微信公众平台之前,先去微信官方了解下大概的情况 这里:http://mp.weixin.qq.com/wiki/index.php :看了之后心里大致有数了,开始设计数据库,尽可能的考虑,未考虑到 ...
- [c#]asp.net开发微信公众平台(8)微信9大高级接口,自定义菜单
前7篇把最基础的消息接收和回复全做完了, 也把高级接口的入口和分拆处理写好了空方法, 此篇接着介绍微信的9大高级接口, 并着重讲解其中的自定义菜单. 微信9大接口为: 1.语音识别接口 2.客服接 ...
- 使用Java开发微信公众平台(四)——消息的接收与响应
上一篇文章(http://www.jerehedu.com/fenxiang/171807_for_detail.htm )中,我们学习了使用Java语言开发微信公众平台的第一部分——环境搭建与开发接 ...
- [C#]asp.net开发微信公众平台----目录汇总-持续更新
1.[c#]asp.net微信公众平台开发(1)数据库设计 2.[c#]asp.net微信公众平台开发(2)多层架构框架搭建和入口实现 3.[c#]asp.net微信公众平台开发(3)微信消息封装及反 ...
- [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码
这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西, 当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥, 只 ...
随机推荐
- 命令行运行ionic run android 出现running one or more of the platforms Error
问题如图所示: 或者 这个问题也是由于端口号被占用的原因,解决的方法在上篇博客<Ionic run android失败解决方法>.
- VUE-v-if和v-else的使用
1.v-if和v-else <h2 v-if="true">v-if</h2> <h2 v-else>v-else</h2> 注:v ...
- oracle查看表空间的真实使用情况
--查看表空间的真实使用情况 set linesize 500 pagesize 500 col tablespace_name format a25 col TP_REAL_GB format a1 ...
- Docker搭建Nexus(Maven私库)
0.镜像的查找:docker search nexus 1.拉取官方镜像:docker pull sonatype/nexus3 2.创建了自己的目录 (/opt/nexus/nexus-data) ...
- MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型
一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...
- Linux shell while循环语句
for :明确循环次数 while :不确定循环换次数 while循环 (1) while CONDITION:do statement statement < ...
- 【IntelliJ IDEA新手入门】IDEA如何快速搭建Java开发环境
作为IntelliJ IDEA mac新手,IDEA如何快速搭建Java开发环境呢? 今天小编就给大家带来了IntelliJ IDEA mac使用教程,想知道IDEA如何快速搭建Java开发环境?那就 ...
- IDEA中如何导入一个maven项目并配置相关设置
导入一个maven项目参照如下链接 https://jingyan.baidu.com/article/b0b63dbf0c0ac04a49307078.html 要想启动这个导入的项目目前我所接触到 ...
- debug模式不报错,release模式报错
经常会 char * pMem = new char[icount]; 其中icount为变量,然后对该内存段猛的操作.release编译出来,出现莫名奇妙的错误.但是debug没问题. 后面查了别人 ...
- 解决tomcat出现乱码问题---韦大仙
1. 改这两个文件 URIEncoding="UTF-8" 2.然后重启idea