雅荷心语博客
雅荷心语
心之所向便是光
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 关注本站
    • 微信
    • 微博
    • 腾讯微博
    • Twitter
    • Facebook
    • RSS订阅
Hi, 请登录     我要注册     找回密码

微信扫描二维码登陆网页的原理分析

2016-07-04 分类:后端之路 / 微信平台 阅读(3177) 评论(0)

今天逛知乎看到了这个问题,就来聊聊怎么扫码登陆网页绑定个人信息~

首先当用户打开一个网页的时候,我们需要生成一张二维码,

使用微信的获取带参数的二维码接口

接口地址: 生成带参数的微信二维码

分为临时和永久两种,当然我们这里使用临时的就可以了.

调用接口

1
2
3
4
http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

返回结果

1
{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==","expire_seconds":60,"url":"http:\/\/weixin.qq.com\/q\/kZgfwMTm72WWPkovabbI"}

然后调用接口获取二维码

1
2
3
HTTP GET请求(请使用https协议)
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
提醒:TICKET记得进行UrlEncode

这样我们得到了二维码的图片,展示给用户

用户扫码以后,我们会得到一个扫码事件,事件的标识是SCAN,借用之前的一部分代码演示一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
case 'event': //点击等事件
$Event = $weObj->getRevData();
$userId = $weObj->getRevFrom();//获取用户
if($Event['Event'] == 'SCAN') { //来自场景扫描
    $text = $this->actionEventData($Event,$userId);
    $weObj->text($text)->reply();
}elseif($Event['Event'] == 'subscribe'){ //新用户关注
    if(empty($Event['EventKey'])) { //新用户关注
        $text = C('Subscribe');
    }else{
        $text = $this->actionEventData($Event,$userId,1);//扫码进来的新用户关注事件
    }
    $weObj->text($text)->reply();
}elseif($Event['Event'] == 'unsubscribe'){ //取消关注
    //$weObj->text('取消关注了')->reply();
}elseif($Event['Event'] == 'CLICK'){ //自定义的点击事件
    if (substr($Event['EventKey'],0,3) == 'BT_') {
        $wechatText = new wechatText();
        $result = $wechatText->actionBtn(substr($Event['EventKey'],3,100),$userId);
        if($result['code'] > 0){
            if ($result['type'] == 'imgArticle') {
                $weObj->news($result['text'])->reply();
            }else{
                $weObj->text($result['text'])->reply();
            }
        }
    }
}else{
    exit('success');//不用回复数据
}
break;

如果: $Event[‘Event’] == ‘SCAN’,那就是来自场景扫描,然后我们获取扫描带过来的信息,也就是那个32位的字符串,

这样,如果这个串和获取二维码时候那个字符串是一样的,那肯定就是同一个人,因为扫描时候,我们同时获取到了用户的openid等等信息,根据openid,可以获取用户的其他信息,这样,我们把用户的openid存入数据库,下次扫码进来,我们直接比对openid就是了,这样一次完整的登陆就ok了!

因为做过与这个类似的功能,所以扫码登陆页应该是这个样子,如果文中有错误或者不严谨的地方,欢迎指正!

喜欢 (1) 赏 讨厌 (0)
分享到:更多 ()
标签:微信开发

相关推荐

  • 微信小程序中rpx与rem单位转换
  • 记录两个关于图片和文件的Html5新属性
  • 微信小程序框架 wepy 实现组件事件交互及通讯
  • composer下载phpqrcode给二维码中间加上logo
  • 微店开放平台与微韵商城的一些简单构思~~
  • 关于本地平台改版及认证机制更改的一些说明
  • 微韵全部图片资源已迁移到腾讯云存储
  • 平台新功能上线,微站分类顶部幻灯片后台自定义
关于我

小天明 北京·朝阳 前端搬砖工程师

碎碎念):(来自公众号)

热门文章

  • 踩坑记录——iphone上safari开启隐身模式时localStorage变为只读-雅荷心语博客踩坑记录——iphone上safari开启隐身模式时localStorage变为只读2017-02-21评论(4)
  • 程序员是怎样一群人-雅荷心语博客程序员是怎样一群人2015-12-08评论(3)
  • 百度你个大毒瘤 - 吐糟博客这几天打不开事情-雅荷心语博客百度你个大毒瘤 – 吐糟博客这几天打不开事情2015-12-28评论(2)
  • PHP 非对称加密 openssl 加密及解密方法-雅荷心语博客PHP 非对称加密 openssl 加密及解密方法2016-05-17评论(2)
  • PHPStorm10 下载安装破解汉化-雅荷心语博客PHPStorm10 下载安装破解汉化2015-12-15评论(2)
2025年7月
一 二 三 四 五 六 日
« 六    
 123456
78910111213
14151617181920
21222324252627
28293031  

最新评论

  • 前端小武 8年前 (2017-04-06)说:
    我看到了layer
  • 丁艳平 8年前 (2017-03-03)说:
  • Dawn 9年前 (2016-09-16)说:
    call_user_func_array最后的例子是错哦,你用bc方法去调用类里 另外一个方法就知道问题所在了。情况1.调用非静态方法 第一个参数应该传[类的实例,调用方法] (既然有类实例了直接-&
  • Dawn 9年前 (2016-06-21)说:
    tp框架设置了全局捕获异常的,这也没什么。坑的是 他捕获了异常。然后全部返回404。。。不知道的 还以为自己网站被删除了
  • Dawn 9年前 (2016-05-17)说:
    构造函数里的判断 用异常机制可能更好一些

其他类型

  • 芊云全景
  • 配音兔AI配音神器

博客类型

  • 芊云全景
  • 配音兔AI配音神器

左邻右舍

  • 易水寒
  • 楼教主
  • 芊云全景
  • 贤心
  • 配音兔AI配音神器

雅荷心语博客 -心之所向便是光

联系我们关于我们

© 2025 雅荷心语博客   网站地图