一、用户标签管理

开发者可以使用用户标签管理的相关接口,实现对公众号的标签进行创建、查询、修改、删除等操作,也可以对用户进行打标签、取消标签等操作。

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 开发微信公众平台 (二)- 用户管理的更多相关文章

  1. Delphi 开发微信公众平台 (三)- 获取微信服务器IP地址

    如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息. 接口调用请求说明 http 请求方式: GET https:/ ...

  2. Delphi 开发微信公众平台 (一)- 定义数据结构

    先定义数据类型: unit rtcMW.Wechat.Types; interface uses Generics.Collections, Rest.Json, System.Json.Serial ...

  3. 使用Java开发微信公众平台(二)——消息的接收与响应

    上一篇文章(http://www.jerehedu.com/fenxiang/171807_for_detail.htm )中,我们学习了使用Java语言开发微信公众平台的第一部分——环境搭建与开发接 ...

  4. Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付)

    http://www.cnblogs.com/devinlee/p/4565933.html Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付) 关注作者 ...

  5. [c#]asp.net开发微信公众平台(1)数据库设计

    开发微信公众平台之前,先去微信官方了解下大概的情况 这里:http://mp.weixin.qq.com/wiki/index.php :看了之后心里大致有数了,开始设计数据库,尽可能的考虑,未考虑到 ...

  6. [c#]asp.net开发微信公众平台(8)微信9大高级接口,自定义菜单

    前7篇把最基础的消息接收和回复全做完了,  也把高级接口的入口和分拆处理写好了空方法,  此篇接着介绍微信的9大高级接口, 并着重讲解其中的自定义菜单. 微信9大接口为: 1.语音识别接口 2.客服接 ...

  7. 使用Java开发微信公众平台(四)——消息的接收与响应

    上一篇文章(http://www.jerehedu.com/fenxiang/171807_for_detail.htm )中,我们学习了使用Java语言开发微信公众平台的第一部分——环境搭建与开发接 ...

  8. [C#]asp.net开发微信公众平台----目录汇总-持续更新

    1.[c#]asp.net微信公众平台开发(1)数据库设计 2.[c#]asp.net微信公众平台开发(2)多层架构框架搭建和入口实现 3.[c#]asp.net微信公众平台开发(3)微信消息封装及反 ...

  9. [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码

    这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西,  当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥,  只 ...

随机推荐

  1. js的6种继承方式

    重新理解js的6种继承方式 注:本文引用于http://www.cnblogs.com/ayqy/p/4471638.html 重点看第三点 组合继承(最常用) 写在前面 一直不喜欢JS的OOP,在学 ...

  2. 大规模定制模式之于MES的三点思考

    大规模定制(Mass Custermization) ,其目标是大规模生产定制化产品,并且在效率.质量(一致性)等指标方面与大规模批量生产等齐. 这是一种理想或者追求,其提出的背景是目前越发普遍的多品 ...

  3. Fundebug 微信小程 BUG 监控插件更新至 1.2.1,优化错误上报次数的限制算法,新增 silentHttpHeader 配置选项

    摘要: 1.2.1优化错误上报次数的限制算法,新增silentHttpHeader配置选项,请大家及时更新哈! Fundebug提供专业的微信小程序 BUG 监控服务,可以第一时间为您捕获生存环境中小 ...

  4. mapping 映射

    es的映射就相当于编程语言中给变量定义类型,定义后的变量使用起来更高效,未定义的变量相较于定义的性能肯定是不如的.所以需要掌握es映射. 未定义映射es会对提供的数据进行类型猜测,如果对自动判断的类型 ...

  5. PS下修改背景色

    1.打开要修改的图片 2.选择左侧的快速选择工具,右键选择魔法棒 3.在图片上点击左键选取背景 4.菜单栏选择编辑,点击填充 5.在填充选项框中选择“颜色",点击选取要使用的颜色,确定

  6. Natas25-writeup

    前言 题目链接: http://natas25.natas.labs.overthewire.org 做这一题花了一些时间,也是由于自己知识点掌握不足,所以分享下解题过程. 题目分析 首先,登录后看到 ...

  7. LOJ 2085: 洛谷 P1587: bzoj 4652: 「NOI2016」循环之美

    题目传送门:LOJ #2085. 两个月之前做的傻题,还是有必要补一下博客. 题意简述: 求分子为不超过 \(n\) 的正整数,分母为不超过 \(m\) 的正整数的所有互不相等的分数中,有多少在 \( ...

  8. 201871010109-胡欢欢《面向对象程序设计(java)》第四周学习总结会

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  9. CNN是怎样一步步工作的?

    非常形象详细的博客:链接1 链接2 为了完成我们的卷积,我们不断地重复着上述过程,将feature和图中每一块进行卷积操作.最后通过每一个feature的卷积操作,我们会得到一个新的二维数组.这也可以 ...

  10. jQuery对象和DOM对象转换,解决jQuery对象不能使用js方法的问题

    有时候想要jQuery对象使用js方法,但是jQuery对象是什么js方法都不能用,怎么办呢?方法其实很简单,只要转换jQuery和DOM对象就可以了. 方法一: var $cr = $(" ...