ホームページ  >  記事  >  バックエンド開発  >  WeChatポータルとアプリケーションのC#開発 (5) ユーザーグループ情報の管理

WeChatポータルとアプリケーションのC#開発 (5) ユーザーグループ情報の管理

黄舟
黄舟オリジナル
2017-06-18 10:29:291428ブラウズ

この記事では主に、WeChat ポータルとアプリケーションの C# 開発に関する第 5 回の記事を詳しく紹介します。ユーザー グループ情報管理には、一定の参考価値があります。興味のある友人は参照してください。先月、私たちは C# を開発しました。 WeChat ポータルとアプリケーションについて、いくつかのエッセイを書いて共有しましたが、時間の制約のため、しばらくこのシリーズのブログを書き続けていませんでした。これは、この側面の研究をやめたわけではありません。この分野のテクノロジーをより適切に適用するには、基礎となるテクノロジーの開発に集中する必要があります。この記事は、前回の記事に引き続き、グループ管理の開発と応用について紹介します。この記事と前回の記事の内容は、ユーザー情報とグループ情報管理を完全に組み合わせたものになります。

1. ユーザー グループの管理コンテンツ

ユーザー グループの導入は、主にフォロワー リストの管理とさまざまなグループへのメッセージ送信の操作を容易にすることです

1 つの公開アカウントで最大 500 のグループの作成がサポートされます。

ユーザー グループ管理には次の側面が含まれます:

1 グループを作成する

2 すべてのグループをクエリする

3 ユーザーが属するグループをクエリする

4 グループ名を変更する
5 モバイル ユーザー グループ

WeChat のグループ作成の定義は次のとおりです。以下のように表示します。

httpリクエストメソッド:POST(httpsプロトコルを使用してください)

https://

api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN
POSTデータ形式:jsonPOSTデータ例: {"group":{"name":"test"}}

通常返される結果は以下の通りです。

{
  "group": {
    "id": 107, 
    "name": "test"
  }
}

他のインターフェースも同様の方法で、いくつかのパラメーターを URL に POST して、返された Json データを取得します。

前回のエッセイで定義したGroupJsonのエンティティクラス情報は以下の通りです。

  /// <summary>
  /// 分组信息
  /// </summary>
  public class GroupJson : BaseJsonResult
  {
    /// <summary>
    /// 分组id,由微信分配
    /// </summary>
    public int id { get; set; }

    /// <summary>
    /// 分组名字,UTF8编码
    /// </summary>
    public string name { get; set; }
  }

上記のインターフェースの定義を基に、いくつかのインターフェースを定義し、
ユーザー管理

のAPIインターフェースにまとめました。

    /// <summary>
    /// 查询所有分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <returns></returns>
    List<GroupJson> GetGroupList(string accessToken);
            
    /// <summary>
    /// 创建分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="name">分组名称</param>
    /// <returns></returns>
    GroupJson CreateGroup(string accessToken, string name);
            
    /// <summary>
    /// 查询用户所在分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="openid">用户的OpenID</param>
    /// <returns></returns>
    int GetUserGroupId(string accessToken, string openid);
    
    /// <summary>
    /// 修改分组名
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="id">分组id,由微信分配</param>
    /// <param name="name">分组名字(30个字符以内)</param>
    /// <returns></returns>
    CommonResult UpdateGroupName(string accessToken, int id, string name);
            
    /// <summary>
    /// 移动用户分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="openid">用户的OpenID</param>
    /// <param name="to_groupid">分组id</param>
    /// <returns></returns>
    CommonResult MoveUserToGroup(string accessToken, string openid, int to_groupid);


2. ユーザーグループ管理インターフェースの実装

2.1 ユーザーグループの作成

ユーザーグループを作成する POST データ操作の実装方法を分析するために、ユーザーを作成する具体的なプロセスを段階的に理解してみましょう。ステップ。

まず、動的に定義されたエンティティ クラス情報を作成する必要があります。これには、以下に示すように、言及する必要があるいくつかの属性が含まれています。

string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}", accessToken);
var data = new
 {
  group = new
 {
  name = name
  }
 };
string postData = data.ToJson();

その中で、オブジェクトを適切な Json データ操作に変換し、拡張メソッド ToJson に配置します。これは主に、動的に定義されたエンティティ クラスの Json コンテンツへの変換を容易にするためであり、主にシリアル番号を呼び出すためです。 Json.NETの操作。

/// <summary>
/// 把对象为json字符串
/// </summary>
/// <param name="obj">待序列号对象</param>
/// <returns></returns>
public static string ToJson(this object obj)
 {
  return JsonConvert.SerializeObject(obj, Formatting.Indented);
 }

投稿データを準備したら、データを取得して適切な形式に変換するためのオペレーション コードを詳しく見ていきます。

GroupJson group = null;

CreateGroupResult result = JsonHelper<CreateGroupResult>.ConvertJson(url, postData);
 if (result != null)
{
     group = result.group;
 }

POST データを適切な形式のエンティティ クラスに変換する操作は、ConvertJson メソッドに配置されます。このメソッドの定義は次のとおりです。これは、私のパブリック クラス ライブラリの補助クラスです。主に最下層を呼び出します。 httpWebRequest オブジェクト メソッドはデータを送信し、戻り結果を取得します。

/// <summary>
/// 转换Json字符串到具体的对象
/// </summary>
/// <param name="url">返回Json数据的链接地址</param>
/// <param name="postData">POST提交的数据</param>
/// <returns></returns>
    public static T ConvertJson(string url, string postData)
    {
      HttpHelper helper = new HttpHelper();
      string content = helper.GetHtml(url, postData, true);
      VerifyErrorCode(content);

      T result = JsonConvert.DeserializeObject<T>(content);
      return result;
    }

このように、ユーザーグループを作成するための完全な操作機能は次のとおりです。

    /// <summary>
    /// 创建分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="name">分组名称</param>
    /// <returns></returns>
    public GroupJson CreateGroup(string accessToken, string name)
    {
      string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}", accessToken);
      var data = new
      {
        group = new
        {
          name = name
        }
      };
      string postData = data.ToJson();

      GroupJson group = null;
      CreateGroupResult result = JsonHelper<CreateGroupResult>.ConvertJson(url, postData);
      if (result != null)
      {
        group = result.group;
      }
      return group;
    }

2.2 すべてのグループをクエリする

すべてのグループをクエリすると、サーバー上のすべてのグループ、つまり各グループの ID と名前を取得できます。

    /// <summary>
    /// 查询所有分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <returns></returns>
    public List<GroupJson> GetGroupList(string accessToken)
    {
      string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/get?access_token={0}", accessToken);

      List<GroupJson> list = new List<GroupJson>();
      GroupListJsonResult result = JsonHelper<GroupListJsonResult>.ConvertJson(url);
      if (result != null && result.groups != null)
      {
        list.AddRange(result.groups);
      }

      return list;
    }

2.3 ユーザーが所属するグループを問い合わせる

デフォルトでは、各ユーザーはグループ化されていないグループに属しています。つまり、API を通じてユーザーのグループ情報を取得できます。ユーザーグループの。

    /// <summary>
    /// 查询用户所在分组
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="openid">用户的OpenID</param>
    /// <returns></returns>
    public int GetUserGroupId(string accessToken, string openid)
    {
      string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/getid?access_token={0}", accessToken);
      var data = new
      {
        openid = openid
      };
      string postData = data.ToJson();

      int groupId = -1;
      GroupIdJsonResult result = JsonHelper<GroupIdJsonResult>.ConvertJson(url, postData);
      if (result != null)
      {
        groupId = result.groupid;
      }
      return groupId;
    }

2.4 グループ名を変更する

実際にユーザーが所属するグループを調整することもできます。操作コードは次のとおりです。

    /// <summary>
    /// 修改分组名
    /// </summary>
    /// <param name="accessToken">调用接口凭证</param>
    /// <param name="id">分组id,由微信分配</param>
    /// <param name="name">分组名字(30个字符以内)</param>
    /// <returns></returns>
    public CommonResult UpdateGroupName(string accessToken, int id, string name)
    {
      string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/update?access_token={0}", accessToken);
      var data = new
      {
        group = new
        {
          id = id,
          name = name
        }
      };
      string postData = data.ToJson();

      return Helper.GetExecuteResult(url, postData);
    }

ここでの戻り値 CommonResult は、成功または失敗を示す bool フラグと、String 型の
エラー メッセージ

(存在する場合) を含むエンティティ クラスです。

GetExecuteResult 関数本体には、主にデータを送信し、結果を取得し、結果に基づいて処理する関数が含まれています。

    /// <summary>
    /// 通用的操作结果
    /// </summary>
    /// <param name="url">网页地址</param>
    /// <param name="postData">提交的数据内容</param>
    /// <returns></returns>
    public static CommonResult GetExecuteResult(string url, string postData = null)
    {
      CommonResult success = new CommonResult();
      try
      {
        ErrorJsonResult result;
        if (postData != null)
        {
          result = JsonHelper<ErrorJsonResult>.ConvertJson(url, postData);
        }
        else
        {
          result = JsonHelper<ErrorJsonResult>.ConvertJson(url);
        }

        if (result != null)
        {
          success.Success = (result.errcode == ReturnCode.请求成功);
          success.ErrorMessage = result.errmsg;
        }
      }
      catch (WeixinException ex)
      {
        success.ErrorMessage = ex.Message;
      }

      return success;
    } 
  }

上記の赤い部分の意味は、エンティティクラスに変換する際、WeChatでエラーが定義されている場合、エラーメッセージが記録され、他の例外は処理されない(つまりスローされる)ということです。 )。

2.5 ユーザーを新しいグループに移動する

ユーザーを新しいグループに移動する操作は上記のセクションと似ています。詳細についてはコードを参照してください。

3. ユーザーグループ化インターフェースの呼び出し

上記のセクションでは、ユーザー関連のすべてのコードが定義され、実装されています。その呼び出し操作は次のとおりです。コードが表示されます(テストコード)。

    private void btnGetGroupList_Click(object sender, EventArgs e)
    {
      IUserApi userBLL = new UserApi();
      List<GroupJson> list = userBLL.GetGroupList(token);
      foreach (GroupJson info in list)
      {
        string tips = string.Format("{0}:{1}", info.name, info.id);
        Console.WriteLine(tips);
      }
    }

    private void btnFindUserGroup_Click(object sender, EventArgs e)
    {
      IUserApi userBLL = new UserApi();
      int groupId = userBLL.GetUserGroupId(token, openId);

      string tips = string.Format("GroupId:{0}", groupId);
      Console.WriteLine(tips);
    }

    private void btnCreateGroup_Click(object sender, EventArgs e)
    {
      IUserApi userBLL = new UserApi();
      GroupJson info = userBLL.CreateGroup(token, "创建测试分组");
      if (info != null)
      {
        string tips = string.Format("GroupId:{0} GroupName:{1}", info.id, info.name);
        Console.WriteLine(tips);

        string newName = "创建测试修改";
        CommonResult result = userBLL.UpdateGroupName(token, info.id, newName);
        Console.WriteLine("修改分组名称:" + (result.Success ? "成功" : "失败:" + result.ErrorMessage));
      }
    }

    private void btnUpdateGroup_Click(object sender, EventArgs e)
    {
      int groupId = 111;
      string newName = "创建测试修改";

      IUserApi userBLL = new UserApi();
      CommonResult result = userBLL.UpdateGroupName(token, groupId, newName);
      Console.WriteLine("修改分组名称:" + (result.Success ? "成功" : "失败:" + result.ErrorMessage));
    }

    private void btnMoveToGroup_Click(object sender, EventArgs e)
    {
      int togroup_id = 111;//输入分组ID

      if (togroup_id > 0)
      {
        IUserApi userBLL = new UserApi();
        CommonResult result = userBLL.MoveUserToGroup(token, openId, togroup_id);

        Console.WriteLine("移动用户分组名称:" + (result.Success ? "成功" : "失败:" + result.ErrorMessage));
      }
    }

了解了上面的代码和调用规则,我们就能通过API进行用户分组信息的管理了。通过在应用程序中集成相关的接口代码,我们就能够很好的控制我们的关注用户列表和用户分组信息。从而为我们下一步用户的信息推送打好基础。

以上がWeChatポータルとアプリケーションのC#開発 (5) ユーザーグループ情報の管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。