orzfly
2017-08-31 20:01:16 +08:00
一看到 access_token,就觉得这个真的是 token 了?
有没有看过表名字里的 open ?有没有想过,假如 sys_open_user 是一个用来关联第三方登陆和系统中用户的表……
假如这个表结构是这样:id (关联 ID), platform (平台名称), platform_id (平台侧用户唯一标识符), access_token (平台侧访问密钥,比如 OAuth 里的 access_token)
如果用微信登陆,那 platform 就写 wechat,微信大概会提供 OpenID 给你作为唯一标识符,那我 platform_id 就记录微信的 OpenID,然后微信的 OAuth 过程中也许会给我个 access_token,那我就把他给的 access_token 存下来。
假如手机作为一种第三方登陆,那我 platform 可以写 mobile。因为手机号码是唯一标示符,那我可以用手机号码作为 platform_id。手机登陆不像 OAuth 有 access_token,那我 access_token 又不能为空,随便写个值不过分吧?
然后呢,那个错误信息:
> Duplicate entry 185xxxxxxxx, mobile for key `idx_pid_pf`.
看起来是有一个叫做 idx_pid_pf 的索引,是对 (platform_id, platform) 做的 UNIQUE ……
所以,真的有那么好笑嘛?
(利益声明:我根本不知道 echo 回声是个什么东西……)