PC端登录需要在微信开放平台申请,而移动端授权登录只需要有已经认证的服务号即可。然后同一个网站平台,用同一个微信用户去登录,会发现PC端获取的微信用户openid和移动端不同,这个问题如何解决?

一、官方做法

我们需要在微信开放平台绑定微信服务号,这个时候就有一个奇葩的事情出现,如果该微信服务号没有申请微信小程序,那么微信开放平台提示必须先开通小程序。

那么在微信开放平台绑定微信服务号后,我们就可以获取到统一的一个UnionID,这个UnionID无论是Pc端微信登录还是移动端微信登录,都是统一的。

我们看下官方的解释:

UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。

二、另辟蹊径的做法

场景1、

1、手机号注册-》成功。

2、该用户第一次使用PC端微信登陆,则到达绑定手机号页面,如果该手机号已经注册,则更新数据表字段weixin_open_id。

3、该用户第二次使用PC端微信登陆,更新最后一次登录时间。

场景2、

1、手机号注册-》成功。

2、该用户第一次使用移动端微信登陆,则到达绑定手机号页面,如果该手机号已经注册,则更新数据表字段weixin_open_id_m。

3、该用户第二次使用移动端微信登陆,更新最后一次登录时间。

场景3、

1、该用户第一次使用PC端微信登陆,则到达绑定手机号页面,绑定手机号,插入记录。

2、该用户第二次使用PC端微信登陆,更新最后一次登录时间。

场景4、

1、该用户第一次使用移动端微信登陆,则到达绑定手机号页面,绑定手机号,插入记录。

2、该用户第二次使用移动端微信登陆,更新最后一次登录时间。

总之,无论用户第一次是手机号注册还是PC端微信登陆、移动端微信登陆,只要是第一次登陆,我们都会拿到用户的手机号,那么手机号作为该用户凭证。

三、需要注意

我们可以用如下代码判断是PC微信登录还是移动端微信登录:

if(request()->isMobile()){    //移动端}else{    //PC端}

PC微信登录和移动端微信登录需要分别处理。

最后

我们还是建议大家用官方做法,如果遇到某些情况可以使用第二种。另外对于大型网站来说,PC端和移动端单独分开,不适合自适应网站开发。

更多相关文章

  1. 详解PHP面向对象之后期静态绑定
  2. jQuery 事件绑定方法(bind hover toggle live.... )、删除事件方法
  3. JQuery UI datepicker在绑定到类时不起作用
  4. jQuery中的bind绑定事件与文本框改变事件的临时解决方法
  5. jQuery+EasyUI实现treegrid/datagride所绑定列只能够输入数字,且
  6. 绑定和解除相同javascript函数的目的是什么?
  7. 使用HTML5验证时如何绑定到提交事件?
  8. 用jquery 绑定一个按钮click事件后,第一次点击后,一切正常,第二次点
  9. 怎么用js或jquery把一个函数b绑定到另一个函数a之后执行

随机推荐

  1. JPA hibernate spring repository pgsql
  2. 【原】Mysql最大连接数
  3. MySQL5.5.22版本安装配置以及基本命令的
  4. 请问用PL/SQL如何判断两个日期之间相差的
  5. 最近用到的SQL语句
  6. QT5.3连接mysql数据库
  7. postgresql 数组 多了引号 空格处理
  8. 解决缺少sql头文件编译错误
  9. (SqlServer)分离所有用户数据库
  10. python3爬虫爬取豆瓣电影并保存到sql ser