收藏
回答

关于 openID存储方案和unionid存储方案 ?

现在开放平台下有多个应用,小程序,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,又需要改数据库了,各位大佬给指点下该如何操作?谢谢了


最后一次编辑于  08-28  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    08-29
    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相关信息表';


    08-29
    赞同 1
    回复 2
    • 盖伦
      盖伦
      08-29
      表都帮忙建好了。谢谢你, access_token 再多个应用下是同一吧(同一个开放平台下的不同应用)
      08-29
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      08-29回复盖伦
      access_token 再多个应用下是否同一,不太清楚
      08-29
      回复
  • 铭锋科技
    铭锋科技
    08-29

    存json嘛

    {

      "wxappid1": "wx1openid",

      "wxappid2": "wx2openid"

    }


    08-29
    赞同
    回复 8
    • 盖伦
      盖伦
      08-29
      不存数据库不太方便吧, 因为很多时候要取用,已文件的形式存,当数据量大了还不如数据库来的快
      08-29
      回复
    • 吴迪
      吴迪
      08-29回复盖伦
      他的意思是json串存一个字段,不过这不好维护,还是分表吧,易扩展
      08-29
      回复
    • 盖伦
      盖伦
      08-29回复吴迪
      分表的情况下,有什么建议吗 ?我的那个想法可行性有多大(帖子中的那个想法)
      08-29
      回复
    • 吴迪
      吴迪
      08-29
      分表的话把关联关系做好,索引,存储你要用到的字段。你的想法目前够用,但是你还说了以后还有可能加公众号其它的,分表方便很多
      08-29
      回复
    • 盖伦
      盖伦
      08-29回复吴迪
      同一个开放平台下的不同应用,access_token是一样的吗 ?
      08-29
      回复
    查看更多(3)
  • 盖伦
    盖伦
    08-28

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

    08-28
    赞同
    回复 12
    • 拾忆
      拾忆
      08-29

      在原表上整加一个类型字段用来区分是APP还是公众号或小程序的,然后openid和unionid做为独立字段,获取用户唯一标识的时候以unionid为准,不是就可以了?

      08-29
      回复
    • 拾忆
      拾忆
      08-29

      老用户的信息肯定只能重新访问的时候获取

      08-29
      回复
    • 盖伦
      盖伦
      08-29回复拾忆
      你的意思是:user_id,openid,unionid,type , 一个类型一条数据,APP,小程序,公众号就是3条数据 ?是这样吗?
      08-29
      回复
    • 拾忆
      拾忆
      08-29回复盖伦

      嗯,这样应该改动比较小

      08-29
      回复
    • 拾忆
      拾忆
      08-29回复盖伦

      不过理解有点问题,应该是一个openid和unionid外加类型是同一条数据

      08-29
      回复
    查看更多(7)
问题标签