前言

一般情况下,个人博客网站 想要做用户注册、登录, 就需要让用户填写用户名、密码等信息进行手动注册、登录,这非常不友好。如果想做成微信扫码登录,对不起~~, 微信扫码登录的接口只对企业开放。好吧, 现在就让我来给大家带来“福音”, 个人资质实现博客网站微信扫码登录

在线测试扫码登录

在讲正式内容之前, 先让小伙伴们体验一下扫码登录的效果(这是我临时写出的一个Demo 页面,下面会贴出源码提供免费下载),然后再决定是否值得继续往下看。哈哈~~~~

测试网址:https://demo.sitecode.cn

代码下载:
- 百度云盘:链接:https://pan.baidu.com/s/1z6zIVjMJ3NkY1vyuH0Zitw 提取码:igyh
- csdn下载:https://download.csdn.net/download/IT_rookie_newbie/34191418 (笔者写完文章后上传的,文件还在审核期, 有可能无法下载。)

请求流程:

  1. 用户请求打开网站登录页面,网站后台向微信发起生成二维码(需要携带参数)的请求,并将返回的二维码响应给用户。
  2. 以此同时,用户的扫码登录页面,发起循环监听请求, 监听用户操作状态(授权登录,取消授权,已扫码)
  3. 用户打开微信扫码, 并进行操作(授权登录,取消授权,已扫码)
  4. 当第 ② 步骤监听到状态变化, 自动响应相应的操作。

准备工作

  1. 首选需要注册一个小程序( 小程序需要提交审核并上线,如果处于开发版本是没有办法生成二维码图片的
  2. 需要有一个域名,并且域名已经绑定 https 证书 (微信小程序的请求必须要 https), 没有服务器的看这里:【腾讯云】云产品限时秒杀,爆款2核4G云服务器,首年74元

好了,到这里准备工作已经做完了, 现在开始解析代码的流程了,由于代码量比较多, 这里就不详细粘贴全部代码了, 有需要的自己下载。下面就只介绍一下比较重要的部分。

部分代码介绍

1、首选需要去微信小程序获取接口凭证(AccessToken)

/// <summary>
/// 获取接口凭证
/// </summary>
/// <param name="appid">小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。
/// (需要已经成为开发者,且帐号没有异常状态)</param>
/// <param name="secret">小程序唯一凭证密钥,即 AppSecret,获取方式同 appid</param>
/// <returns></returns>
public static AccessTokenResponse GetAccessToken(string appid, string secret)
{string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret);string responseStr = HttpMethods.Get(url);return responseStr.ToObject<AccessTokenResponse>();
}

2、根据第一步获取到的access_token 去请求小程序二维码,这里需要注意下, 在源码中,QRCodeResquest entity 这个对象中page字段的含义是手机扫码之后跳转小程序的页面地址 ,scene 参数则表示小程序二维码中携带的参数, 在微信扫描二维码后可以通过方法取到这个参数,这个参数是关键, 用来标识用户的。

/// <summary>
/// 获取微信小程序二维码
/// </summary>
/// <param name="access_token">access_token</param>
/// <param name="entity">请求实体参数</param>
/// <returns></returns>
public static byte[] Getwxacode(string access_token, QRCodeResquest entity)
{string url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token;return HttpMethods.Post_ReturnByte(url, entity.ToJson());
}

完整的请求二维码的代码大概是这个样子。

/// <summary>
/// 登录
/// </summary>
/// <returns></returns>
public ActionResult Index()
{//获取 AccessTokenAccessTokenResponse entity = WechatHelper.GetAccessToken(Appid, Secret);string cacheKey = Guid.NewGuid().ToString().Substring(0, 32);redisCache.Write<ScanCodeEntity>(cacheKey, new ScanCodeEntity(), 0);QRCodeResquest QRCodeEntity = new QRCodeResquest();QRCodeEntity.page = "pages/Login/Index";QRCodeEntity.scene = cacheKey;//获取小程序二维码byte[] byteArray = WechatHelper.Getwxacode(entity.access_token, QRCodeEntity);using (MemoryStream ms = new MemoryStream(byteArray)){//如果没有填写appid 和 Secret, 此处会报错try{Image outputImg = Image.FromStream(ms);string path = "upload/LoginQRCode/" + Guid.NewGuid().ToString() + ".png";string savePath = AppDomain.CurrentDomain.BaseDirectory + path;outputImg.Save(savePath);ViewBag.imgSrc = "/" + path;ViewBag.cacheKey = cacheKey;}catch (Exception){ViewBag.imgSrc = "/Content/Image/QRCode.jpg";ViewBag.cacheKey = cacheKey;}}return View();
}

3、使用微信扫描二维码, 获取到二维码中携带的参数

  /*** 页面加载*/onLoad: function (option) {console.log("扫码");console.log(option);if (!!option.scene) {this.setData({//获取二维码中的参数QRCode: option.scene});this.ChangeCacheValue(0);}},

4、获取到参数之后,等待用户“授权登录”, 当用户点击“授权登录”之后,小程序端发起请求,向微信端请求用户数据(头像地址,昵称,性别,地区等等)。微信返回的数据中有一个 OpenId参数, 该参数是用户的唯一标识。小伙伴们其实可以将二维码中的参数 scene 理解成表中的主键ID, 当手机端和PC端都知道这ID, 那么手机端的操作就类似于更新操作, 根据ID 去更新这个人的身份信息,而PC 页面则是不停检测ID 为这个人的身份信息是否存在变化, 如果有变化, 则在页面显示出来。这么理解会好一些。其实到这里, 整个流程基本上就已经走完了。有没有觉得很简单~~~~

个人博客网站实现微信扫码登录(附源码)相关推荐

  1. asp毕业设计——基于asp+access的博客网站设计与实现(毕业论文+程序源码)——博客网站

    基于asp+access的博客网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的博客网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  2. 基于Spring Boot+Vue博客系统的设计与实现(附源码)

    摘要 中文博客第一次映入眼帘是在2002年,那时候的个人终端还是人们眼中的香饽饽,随着科技的不断进步和制造业的蓬勃发展,个人计算机终端开始逐渐变得普及,实现了人手一台电脑,在这种趋势中,博客系统走入了 ...

  3. 【微信小程序】实现微信小程序登录(附源码)

    实现微信小程序登录 文章目录 实现微信小程序登录 登录功能简介 界面展示 代码展示 登录功能简介 通过点击登录按钮,调用微信接口wx.getUserProfile拿到微信的个人信息,先检查是否之前已经 ...

  4. 2022全新适配微信登录接口 wordpress博客系统资讯资源变现下载小程序源码

    介绍: 2022全新适配微信登录接口 Wordpress博客系统资讯资源变现下载小程序源码 因为由于微信的新规从11月9号后新上线的小程序将不能获取用户头像和名字了 所以微信放需要适配全新的,支持让用 ...

  5. PHP游戏扫码登录器源码 支持一百多种热门游戏登录

    介绍: PHP游戏扫码登录器源码 支持一百多种热门游戏登录 里面支持一百多种热门游戏登录,比如王者荣耀,英雄联盟手游,手游CF等等! ! ! 不管是用来运营吸引人气还是后续广告都是不错的程序,另外该源 ...

  6. VC++利用笔记本自带摄像头扫二维码功能(附源码demo)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第8章:VC++利用笔记本自带摄像头扫二维码功能(附源码demo) 源代码demo已上传到百度网盘:永久生效  ,代码实现了打开笔记本 ...

  7. 用java实现表白二维码(附源码)

    用java实现表白二维码(附源码) 以下源码可以实现生成一个表白二维码,扫描二维码就能看到二维码里蕴藏的信息. import com.google.zxing.BarcodeFormat;import ...

  8. 博客园7月底至8月初51Aspx源码发布详情

    VidCoder视频转码 v1.3.3源码  2012-8-3 [VS2010] 源码描述:开发环境:vs2008,VidCoder是一个开源免费的DVD/蓝光视频抓取和转码软件.使用HandBrak ...

  9. 博客园12月份第3周51Aspx源码发布详情

    手机电子电器进销存系统源码  2012-12-20 [VS2008 +SQL2005] 源码描述:开发环境:VS2008+SQL2005 技术特点:1.采用目前最流行的.net技术实现,实现分布式的安 ...

最新文章

  1. 最新Python学习项目Top10!
  2. 黄铁军、沈向洋、王海峰入选,中国工程院21年院士增选有效候选人名单公布...
  3. python安装pip_Python的pip安装总是失败怎么办?
  4. 世界机器人大会特种机器人报到高难度的高危险的活让它们来!
  5. 计组-CISC和RISC的基本概念
  6. 关于localStorage和sessionStorage存储用法的一些细节说明----------localStorage和sessionStorage存储必须字符串化...
  7. fox pro删除单条数据_Mac文件夹数据同步工具——Sync Folders Pro
  8. tomcat通过一个端口号实现多域名访问
  9. linux 安装 mysql off,linux下安装mysql
  10. 如何在SQL Server 2016中使用并行插入以提高查询性能
  11. Guava CaseFormat
  12. JAVA基础语法 - 继承
  13. dtft变换的性质_dtft(dtft和dft的关系区别)
  14. xlsx模块 前端_React读取Excel——js-xlsx 插件的使用
  15. 你可以更幸福(转载)
  16. 合同管理数据库设计mysql_工程合同管理信息系统的数据设计理念
  17. 电路原理 | 二阶动态电路
  18. 手游联运平台:游戏详情页介绍
  19. 从0开始搭建Hadoop2.x高可用集群(HDFS篇)
  20. JavaScript学习(七)——对象与数组、内部对象(1)

热门文章

  1. 各大高校博士招生信息(截至2022-01-29)
  2. 比尔·盖茨经典语录集锦
  3. python游戏辅助lol_用Python编写代码分析《英雄联盟》游戏胜利的最重要因素
  4. “呆呆”beta版下载情况及用户反馈
  5. iphone11没有电池小组加件_iPhone11必须增加电池容量和快充,面对5G苹果已经没有太多选择...
  6. 邮件助手、监控邮件上报电脑截图、网课监控助手
  7. @Temporal(TemporalType.DATE)的用途
  8. 日本头号社交网站Mixi成功经验(图)
  9. 被客户抓住了尾巴,28理论与长尾理论
  10. python c++情侣网名是什么意思_c++中嵌入python 看什么意思