了解如何通过小程序的用户 Account ID 获取微信 Union ID 和 Open ID,用于服务号消息推送和统一用户标识管理。
小程序, 微信, Union ID, Open ID, 用户标识, 服务号消息, 明道云, 公众号推送, 用户管理

在使用本功能之前,建议先了解【代码块基础】

功能描述:通过小程序用户的account id获取其对应的微信union id 和 open id

常用场景:

  • 服务号发送消息的时候需要指定用户的open id
  • 当数据源在外部时(比如明道云),需要保存open id作为用户标识
  • 当一个企业有多个小程序,要共用同一套体系的时候,会用到union_id. 比如为了向用户持续推送消息,需要用到公众号推送,启用这个功能需要用到union_id.入参:用户的account id (整数类型) 出参:微信union id (文本类型)和 open id (文本类型)
// 获取account_id
const account_id = context.getArg('account_id');
console.log(account_id);
// 取account信息的gql语句(入参为account id,即过滤的条件)
var gql = `query queryAccount($account_id:bigint!)

{
  account (where:{id:{_eq:$account_id}})
           {

            id
            oauth2_user_info_map
          }
        }`;

// 执行这个gql语句,得到查询结果
var result_id = context.runGql("queryAccount", gql, {account_id}, { role: "user" })

// 创建数组a, a为account信息里名为account的数组
var a = [];
a = result_id.account;
//情况1,account既有union_id,也有open_id
if(a.length!= 0 && a[0].oauth2_user_info_map.WECHAT.hasOwnProperty('unionId')){
  var open_id = a[0].oauth2_user_info_map.WECHAT.openId;
  var union_id = a[0].oauth2_user_info_map.WECHAT.unionId;
  context.setReturn('union_id',union_id);
  context.setReturn('open_id',open_id);
}
  // 情况2,account只有open_id, 没有union_id
else if(a.length!= 0 && !a[0].oauth2_user_info_map.WECHAT.hasOwnProperty('unionId')){
  var open_id = a[0].oauth2_user_info_map.WECHAT.openId;
  context.setReturn('union_id','');
  context.setReturn('open_id',open_id);
}
  // 情况3,account既没有open_id也没有union_id
else{
  context.setReturn('union_id','');
  context.setReturn('open_id','');
}
Copyright © FunctorZ 2024 all right reserved修订时间: 2024-09-10 03:06:56

results matching ""

    No results matching ""