先在小程序这里,换一个用户登录 .. 取消 .. 按一下登录 .. 再用网站上的另一个用户的身份登录到小程序 .. 输入用户名 .. 密码 ... 按一下 登录 ..
登录以后,在用户个人档案页面上,再按一下这个 确定 .. 这样会请求绑定当前登录到微信的用户 .. 成功以后,回到数据库客户端 .. 刷新一下 ..
你会发现,现在有两个用户的 wx_openid 的值都是一样的 ..
先删除掉刚刚绑定的用户的 wx_openid 还有 wx_session_key 的值 ..
我们要让微信用户跟网站用户是一对一的关系,也就是同一个 openid 只能属于网站上的一个用户 ...
接口
回到接口 .. 先在这个接口类里添加一个新的方法 .. 名字是 get_user_by_openid . 支持一个 openid 参数 ..
方法里面我们可以根据传递给这个方法的 openid 的值得到网站上的用户 ..
$users 等于 ... 用一下 get_users ,一个数组参数 .. 里面添加一个 meta_key ,对应的值是 wx_openid .. 再添加一个 meta_value .. 对应的值就是传递进来的这个 $openid 的值 .. meta_compare 设置成 等于 ..
这个 get_users 是 WordPress 提供的方法,这里我们做的就是按照用户的 wx_openid 这个 meta ,查询出网站上的用户 ..
下面判断一下 .. 如果 empty $users .. 我们就 return NULL .. 意思就是指定的 openid 还没有绑定网站上的用户 ..
如果查询出用户,我们可以 return $users 里面的第一个项目 ..
使用
再找到 bind 这个方法 .. 在更新用户 meta 之前,先用一下 $this 的 get_user_by_openid .. openid 的值可以用 $session 里的 openid 来表示 .. 返回的结果起个名字,可以是 $user ..
下面判断一下 .. 如果 $user ,意思就是如果用指定的这个 openid 的值在网站上找到了对应的用户,就说明当前微信用户已经跟网站上的某个用户绑定在一起了 .. 在这种情况下,就可以 return 一个新的 WP_Error .. 错误代码可以是 weixin_rest_already_bind ...
第二个参数是错误信息 .. __( '您的微信帐号跟某个用户已经绑定在一起了。' )
第三个参数是个数组 ... 把 status 设置成 400 ..
测试
回到小程序 .. 刷新一下页面 .. 按一下确定 .. 返回的数据是个 WordPress 的错误 .. 状态码是我们设置的 400 ..
错误信息是 ,您的微信帐号跟某个用户已经绑定在一起了。