欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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;

上张效果图

Delphi 开发微信公众平台 (二) 用户管理