现在开放平台下有多个应用,小程序,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,又需要改数据库了,各位大佬给指点下该如何操作?谢谢了
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了,已关注授权后,没有用户交互,是不是就获取不到信息了
在原表上整加一个类型字段用来区分是APP还是公众号或小程序的,然后openid和unionid做为独立字段,获取用户唯一标识的时候以unionid为准,不是就可以了?
老用户的信息肯定只能重新访问的时候获取
嗯,这样应该改动比较小
不过理解有点问题,应该是一个openid和unionid外加类型是同一条数据