关于 openID存储方案和unionid存储方案 ?
发布于 7 年前 作者 gkang 13931 次浏览 来自 官方Issues

现在开放平台下有多个应用,小程序,APP,公众号,目前只存储了 unionid(在user表中) ,对应

openID 和 access_token并未存储, 现在需要用到公众号下的openID(做模板信息推送),现在该如何存这个 openID ?

想法:新建 wx_user表 ,对应 user_id ,xiao_openid,gong_openid,app_openid,access_token,access_token_time ,把对应的openid全部存到用户的关了信息表中 ,access_token 计划任务刷新

这样的话,如果新加个公众号2,又需要改数据库了,各位大佬给指点下该如何操作?谢谢了


3 回复
CREATE TABLE `xxx_app` (
  `aid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'app自增id',
  `appid` varchar(64) NOT NULL DEFAULT '' COMMENT '应用appid',
  `type` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '应用类型,1小程序,2公众号,3App',
  `name` varchar(150) NOT NULL DEFAULT '' COMMENT '应用名称',
  PRIMARY KEY (`aid`),
  UNIQUE KEY `a_t` (`appid`,`type`) USING BTREE COMMENT 'appid和type唯一索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='app - 应用信息表';
CREATE TABLE `xxx_user_appinfo` (
  `uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户uid',
  `aid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '所属应用aid',
  `openid` varchar(64) NOT NULL DEFAULT '' COMMENT '用户openid',
  `unionid` varchar(64) NOT NULL DEFAULT '' COMMENT '用户unionid',
  `access_token` varchar(500) NOT NULL DEFAULT '' COMMENT 'access_token',
  `expire_in` int(10) NOT NULL DEFAULT '0' COMMENT '有效期,expire_in',
  `dateline` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '记录时间戳',
  PRIMARY KEY (`uid`),
  UNIQUE KEY `u_a` (`uid`,`aid`) USING BTREE COMMENT '用户uid和应用aid唯一索引',
  KEY `o_u` (`unionid`,`openid`) COMMENT 'unionid和openid常规索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户 - app相关信息表';

存json嘛

{

  “wxappid1”: “wx1openid”,

  “wxappid2”: “wx2openid”

}

还有个问题就是,老用户是不是获取不到公众号的openID了,已关注授权后,没有用户交互,是不是就获取不到信息了

回到顶部