微信扫码登录功能实现

2023-11-02

原因:很简单,公司的账号登录需要用到微信扫码登录与QQ的登录功能,所以,在做好了微信的扫码登录之后,本人就写这篇微信扫码登录功能实现的教程

教程开始

需要用到的网站:

  1. https://open.weixin.qq.com/  微信开放平台
  2. https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=a655e356d87d4d330ed5cbaf1324389741826089&lang=zh_CN  微信开放平台文档

 

准备工作:

1. 首先当然登录这个微信开放平台啦,不然怎么做扫码登录的功能

2. 新建一个应用

 

3. 新建完应用后是这样子的

 

4. 进行开发者认证,1年300RMB,之前开发的时候没有进行开发者认证,微信那边一直说我有错误,后面又google又百度的,直到认证后,才正常开发

5. 设置回调地址,这里的地址相当于回调域名,可以不用详细到访问的方法内(例:http://www.baidu.com)

 

准备工作完成,正式开发

 

1. 写一个获取服务器返回数据的自定义函数或者使用PHP的 file_get_content 函数

这里的自定义函数的使用CURL

PHP CURL
//php curl(GET)请求
public function curlGet($url){
    if(empty($url)){
        return false;
    }
    $output = '';

    $ch = curl_init();
    $str =$url;
    curl_setopt($ch, CURLOPT_URL, $str);
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
    $output = curl_exec($ch);
    return $output;
}

 

2. 浏览器打开网址,这个网址是一张二维码图片,二维码的信息则是你创建的应用信息

092304_Nrj6_3554366.png

网址:https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=snsapi_login&state=state

参数 是否必须 说明
appid 应用中的APPID
redirect_uri 这是回调地址,先要在授权回调域设置回调的域名地址,然后这里填写的是回调域名下需要访问的方法(这里需要使用编码 URL 字符串函数urlencode())
response_type 是     code固定参数
scope snsapi_login 固定参数, 这里有多个参数,可以用 ‘ , ’分隔,当前仅仅做微信登录,则填写snsapi_login这个参数
state 可以不填,用于防止csrf攻击,你发送什么参数,服务器则返回什么参数给你

 

3. 用微信的扫一扫获取二维码中的code参数

参数 说明
code code参数
state 用于防止csrf攻击,你发送什么参数,服务器相应返回什么参数给你

 

4. 发送ACCESS_TOKEN获取请求

使用 curlGet() 自定义函数访问以下网址

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

 

参数 是否必须 说明
appid 应用中的APPID
secret 应用中的AppSecret
code 上一步所获得的code参数
grant_type authorization_code 固定参数

 

5. 获取ACCESS_TOKEN参数

参数 说明
access_token 接口调用凭证
expires_in access_token接口调用凭证超时时间
refresh_token 用户刷新access_token
openid 授权用户唯一标识
scope snsapi_login 固定参数,用户授权的作用域,使用逗号(,)分隔
unionid 已获得该用户的userinfo授权时,才会出现该字段。

 

6. 发送获取OPENID请求

使用 curlGet() 自定义函数访问以下网址

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

参数 是否必须 说明
access_token 接口调用凭证
openid 授权用户唯一标识

 

7. 获取用户信息

参数 说明
openid 授权用户唯一标识
nickname 微信用户呢称
sex 性别
province 省份
city 城市
country 国家
headimgurl 微信头像地址   最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
privilege 用户特权信息,json数组
unionid 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的

 

 

结语

到这里你已经成功的获取到你微信的对外信息了,你可以根据公司的开发需求开发出你所需要的微信扫码登录功能

 

 

转载于:https://my.oschina.net/u/3554366/blog/1506955

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信扫码登录功能实现 的相关文章

  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • php中的$$是什么意思? [复制]

    这个问题在这里已经有答案了 变量后面的两个背对背 是什么意思 像这样 id 我在哪里可以找到更多相关信息 谢谢 In PHP 意味着您将给至少一名维护程序员带来多年的痛苦和折磨 请注意 您最终可能会成为维护程序员 它是一个可变变量 想象一下
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • 如何使用 jq 从多个嵌套数组中提取键

    SETUP 我试图弄清楚 jq 过滤器是如何工作的 但在找出嵌套数组时遇到了困难 使用下面的数据我无法做出平的 5 键输出 我可以得到 1 个键和 4 个空值 或者 4 个键和 1 个空值 但不能得到所有 5 个键 1 个键 4 个空值 R
  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • PHP 的脚手架 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 PHP 中有什么东西可以像 Rails 一样创建基本的脚手架吗 编辑 我需要一些东西来快速原型化 一些框架比如Symfony http www sym
  • 纯基于网络的版本控制系统

    我的托管服务当前不允许在其服务器上运行 允许 svn git cvs 我真的希望能够将我的开发计算机上的当前源代码与我的生产服务器 同步 我正在寻找一个纯php python ruby版本控制系统 不只是一个client对于版本控制系统 不
  • 切换到 mysqli 是个好主意吗?

    我正在考虑为我的所有 php 项目切换到 mysqli 我的代码编写方式 我运行非常简单的网站并构建了自己的基本框架 我在所有网站上使用该框架 我在修改函数和类时不应该遇到太多问题 然而 我只听说过关于准备好的语句的积极的事情 除了一些关于
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 带 url 参数的 Laravel post 路由

    我面临着幼虫路由的大墙 我似乎找不到解决方案 我在视图模板中有此表单
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • 发送 POST 请求时 JSON 原语无效

    我有以下 ajax 请求 其中我尝试将 JSON 对象发送到服务器 function sendData subscriptionJson ajax type POST url Url Action SubscribeSecurities S
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • 为什么这评估为 true

    为什么这评估结果为真
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co

随机推荐

  • 奥迪A6 C5空调制冷效果差维修

    一台2003年出厂的一汽奥迪A6 C5 2 8L轿车 装备BBG发动机及双区自动空调 行驶约159000公里 该车空调制冷效果差 空调面板设定22度 用手感知出风口温度 凉 但不够凉 压缩机离合器正常吸合 皮带盘正常运行 连接空调歧管压力表
  • 从零读懂CAN总线(上)

    概要 上世纪八十年代以来 汽车ECU越来越多 如ABS 电控门窗 电子燃油喷射装置 如果仍然采用常规的点对点布线方式 即电线一段与开关相接 另一端与用电设备相通 将会导致车上电线数目的急剧增加 从而带来线束的冗余及维修成本的提高 这就对汽车
  • Gorm系列之1

    Gorm系列之1 特别指出 特别指出的是 该系列基础代码来自git上的开源项目7days golang 项目地址 https github com geektutu 7days golang 原项目作者 极客兔兔 个人主页 https ge
  • 网络面试题及答案

    1 标准网络线的颜色排列顺序 568B 橙白 橙 绿白 蓝 蓝白 绿 棕白 棕 568A 绿白 绿 橙白 蓝 蓝白 橙 棕白 棕 直通线一般都用 A线序或 B线序 交叉线一端是 568A 一端 是 568B 2 按照数据访问速度排序 硬盘
  • linux内存调试工具集

    除了GDB以外 linux还提供了很多的内存调试工具 注意 以下工具的使用之前 gcc需要使用 g编译出带符号的elf 1 addr2line 用于将可执行文件的虚拟内存地址或者动态库的偏移量转换成函数以及代码行 动态库的偏移量计算方式 将
  • 用python和计算机对话(计算机的语句)

    计算机中的的语句 编程其实就是一个把人类语言转换成计算机语言的过程 再知道每个字是什么意思后 就要把它连成一句话 这样它便有了意义 程序便是由这样一句一句的计算机语句组成的 那么计算机语句都有哪些呢 1 if else语句 if是如果的意思
  • 字节原来这么容易进,是面试官放水,还是公司实在是太缺人?

    本人211非科班 之前在字节和腾讯实习过 这次其实没抱着什么特别大的希望投递 没想到字节可以再给我一次机会 还是挺开心的 本来以为有个机会就不错啦 没想到能成功上岸 在这里要特别感谢帮我内推的同学 中间投递比较曲折 是他帮了我很多 非常负责
  • onlyoffice文档服务器加载慢,【onlyoffice中文指南】12-问题及排除

    作者 日期 雨中星辰 2018 12 20 故障排除 编辑器集成中最常见的问题及解决方法 下载失败 Download failed 下载失败 编辑器加载过程中将显示 下载失败 消息 该文档编辑服务不能上传文件进行编辑 检查document
  • Android自定义View完美实现指示器位置随进度变化的IndicateProgressView

    该文章同步发布在公众号 LinminTech 上 请在本文最后扫码关注 获取更多精彩Android开发文章 效果图 需求 在平时开发过程中 UI经常要求实现如上图所示的ProgressBar 但是Android系统自带的ProgressBa
  • 嵌入式系统学习(七)-bootloader修改实例

    从 github 中下载 Nanopi2 的 uboot 源码后 从源代码根目录中找到 u boot lds 文件 可以看到以下内容 以上片断可以分析出 整个 uboot 程序从 arch arm cpu slsiap s5p4418 st
  • Executors框架——5种常用的线程池介绍及区别

    1 CachedThreadPool线程池 可向下转型为ThreadPoolExecutor 1 1 线程池核心线程数是0 说明线程空闲时 会被自动回收 1 2 任务队列只能有一个任务 而且最大线程数是整数最大值 所以有任务就会创建线程处理
  • Deeplabcut教程(一)安装(GPU&CPU版本)(纯新人向)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 Deeplabcut是什么 二 使用步骤 1 环境配置 1 1安装anaconda 1 2换源 1 2安装CUDA和CUdnn GPU 2 Deeplab
  • Leet1. 两数之和

    给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可以按任意顺
  • 渗透相关问题(二)

    1 报错注入原理是什么 由于后台没有对数据库的信息做过滤 会输出到前台显示 那么我们就可以利用制造报错函数 将查询语句带入到数据库中 以报错信息显示出来 一般是不以网页标签和xpath的路径格式来制造报错 2 常用哪些函数来制造报错 ext
  • git的详细使用

    文章目录 前言 一 Git工作流程 二 Git的安装 配置与使用 1 Git安装与配置 2 从本地仓库推送到远程仓库 2 从远程仓库拉取文件到本地 修改 新增并提交到 更新远程仓库 前言 参考网上文章 在这里总结一篇 方便自己查询 参考1
  • MySQL——root用户密码忘记,重置的操作

    1 通过任务管理器或者服务管理 关掉mysqld 服务进程 2 通过命令行 特殊参数开启 mysqld mysqld defaults file D ProgramFiles mysql MySQLServer5 7Data my ini
  • MIPI M-PHY - D-PHY- C-PHY

    MIPI M PHY MIPI M PHY是物理层 支持所有芯片到芯片的应用 以及高性能的摄像头和内存应用 M PHY可以在高速 HS 模式下运行 支持高达11 6Gb s的超高带宽 也可以在低功耗 LP 模式下运行 M PHY中支持的芯片
  • 启动hadoop,只有两个从节点没有DataNode的异常

    解决办法 在从节点的logs中查看日志如下 发现问题原因是主节点的VERSIONID和从节点不一样导致的 解决办法 1 有重要数据情况下 把主节点的VERSIONID复制到从节点中 2 没有重要数据情况下 把主节点的hdfs文件夹都删掉
  • 【打字母游戏_C语言实现】

    1 项目需求 2 项目分析 3 项目设计 3 1设计字母结构体 3 2屏幕大小 3 3 添加二维数组空格函数 LnitGrid GridArray ga 3 4 显示网格 ShowGrid GridArray ga struct Lette
  • 微信扫码登录功能实现

    原因 很简单 公司的账号登录需要用到微信扫码登录与QQ的登录功能 所以 在做好了微信的扫码登录之后 本人就写这篇微信扫码登录功能实现的教程 教程开始 需要用到的网站 https open weixin qq com 微信开放平台 https