公众号授权登录h5

news2024/10/7 10:23:22

公众号授权登录h5

.

前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。

.

步骤

  • 1、申请测试号
  • 2、按照下列步骤获取用户信息

网页授权流程分为四步:

  • 1、引导用户进入授权页面同意授权,获取code
  • 2、通过code换取网页授权access_token(与基础支持中的access_token不同)
  • 3、如果需要,开发者可以刷新网页授权access_token,避免过期
  • 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

官方文档:

微信网页授权

测试号申请

申请测试号流程

  • 1、写入可访问的url和随机的token
  • 2、写入域名

在这里插入图片描述

  • 3、网页授权获取用户基本信息,写入项目本地的ip和端口号

在这里插入图片描述
在这里插入图片描述

  • 4、微信扫码关注测试号

在这里插入图片描述

到此,测试号申请完成。

登录获取用户信息

  • 1、获取code
const login = () => {
    console.log('登录');
    const appid = 'wx79517596162e14c9';
    const callback_url = encodeURIComponent(window.location.href); // 获取当前地址,跳转至以下腾讯地址会携带code重定向到该地址
    window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${callback_url}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;
  }

注意,这里只可以在微信环境跳转,非微信环境会出现如下提示

在这里插入图片描述
.

你在微信里打开链接就可以了,然后会出现如下提示,点击同意就可以获取到code

在这里插入图片描述

code以如下形式出现在地址栏

在这里插入图片描述

  • 2、根据code,获取access_token
useEffect(() => {
    // 解析查询参数
    const searchParams = new URLSearchParams(location.search);
    const code = searchParams.get('code');
    console.log(888);
    
    // 处理code参数
    if (code) {
      // 在这里处理获取到的code
      console.log('Code:', code);
      const appId = '测试号的appid';
      const secret = '测试号的secret '
      getAccessToken({
        code, appId, secret,
      }).then(res => {
        const { access_token, refresh_token, openid } = res
        // alert(access_token+'+'+refresh_token+'+'+openid);
        getUserInfo(access_token, openid)
      })
    }
  }, []);

响应回来的结果是一个json对象,这里会出现跨域,以下是我的封装

login.ts

// 获取access_token
export function getAccessToken(params:any) {
  return request.get(`/sns/oauth2/access_token?appid=${params.appId}&secret=${params.secret}&code=${params.code}&grant_type=authorization_code`)
}

// 获取用户信息
export function getUserMessage(params:any) {
  return request.get(`/sns/userinfo?access_token=${params.access_token}&openid=${params.access_token}&lang=zh_CN`)
}

在vite.config.ts里代理

server: {
    host: "0.0.0.0",
    proxy: {
      "/sns": {
          target: "https://api.weixin.qq.com",
      }
    },
 },

.
这里有一个报错,就是说你调用了两次code。我是在微信调一次,然后copy地址到浏览器测试就会报错这个。不需要管,打印的话可以使用alert直接在微信环境打印。

errcode : 40163 errmsg : “code been used, rid: 64a38010-390a5cc5-7d864aea”

  • 3、根据access_token获取用户信息
const getUserInfo = (access_token:string, openid:string) => {
    getUserMessage({
      access_token, 
      openid
    }).then(res => {
      const { openid, nickname, headimgUrl } = res;
      alert(nickname+'+'+headimgUrl+'+'+openid)
    })
  }

获取用户信息成功。

一般情况下登录不这样做,因为前端操作token,这样是不安全的,前端获取code,将code传给后端返回token和userInfo。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

认识JavaScript

大家好,今天我们来认识一下JavaScript相关内容 目录 🐷1.JavaScript是什么🐷2.JavaScript发展史🐷3.JavaScript 和 HTML 和 CSS 之间的关系🐷4.JavaScript 运行过程🐷5.JavaScript 的组成🐷6.用JavaScript写…

JavaScript 实现一键复制(id,账号)

文章目录 HTML准备JavaScript 逻辑css 在前端有很多的时候需要一键复制账号,密码等,比如QQ的复制QQ账号,一些程序应用的个人信息页,都会有一键复制这个功能,下面给大家分享一下一键复制的实现方法 HTML准备 先提前准备…

【Linux修炼】开发工具使用

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

计算机丢失msvcr110.dll是什么意思?那个修复方法更简单

Windows系统的电脑运行一段时间,总是不可避免出现一些系统报错,比如在运行游戏或游戏的时候,报错提示“计算机丢失msvcr110.dll”,“找不到msvcr110.dll”是什么意思呢?我是运行photoshop的时候报错的,场景…

Paddle:SSLD 知识蒸馏实战

SSLD 知识蒸馏实战 论文:https://arxiv.org/abs/2103.05959 1. 算法介绍 1.1 简介 PaddleClas 融合已有的知识蒸馏方法 [2,3],提供了一种简单的半监督标签知识蒸馏方案(SSLD,Simple Semi-supervised Label Distillation),基于 I…

如何解释商业智能BI?商业智能BI未来的发展趋势?

商业智能BI能够成为当前商业世界中备受企业欢迎的数据类技术解决方案其实是有原因的,早在1958年,IBM研究员就将商业智能BI的早期形态定义为:“对事物相互关系的一种理解能力,并依靠这种能力去指导决策,以达到预期的目标…

【Python】正则表达式匹配大部分Url

正则表达式: r’(\w://)?(\w)(.\w).(\w)(/\w)(.\w)?(?(\w\w)(&\w\w))?’ 解释:

World macheine和Houdini这两个软件在游戏地形制作中如何选择?

本文仅针对“World macheine和Houdini这两个软件在游戏地形制作中如何选择?”做出回答。 简单介绍 World Machine: World Machine是一款专业的地形生成软件。它提供了一套强大的工具和节点系统,用于创建高度图和地形。World Machine可以帮助…

opencv使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

文章目录 1、applyColorMap()函数的使用:(1)函数原型:void applyColorMap(InputArray src, OutputArray dst, int colormap)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor) (2&#xff0…

PMP证书为什么可以不用考试就可以获得CSPM二级证书?

一、PMP证书介绍 PMP是指项目管理专业人士(Project Management Professional),是国际上公认的项目管理领域的权威认证。PMP认证由美国项目管理协会(PMI)颁发,是全球范围内最具权威性、最受认可的项目管理专…

Jmeter使用之:怎么编写扩展函数(一)

目录 前言: 1、首先编写我们的java类,如具体代码如下: 2、使用eclipse把java导出成jar包,如timetool.jar。 3、Jmeter 测试计划底部的library找到timetool.jar,导入进去。 4、在Jmeter测试计划下新建线程组&#…

咨询第三方软件测试机构报价时,软件企业应该准备什么?

随着软件行业的快速发展,软件企业也面临着越来越大的市场竞争压力。为了确保软件产品的质量和稳定性,许多企业开始选择外包软件测试服务。然而,在咨询第三方软件测试机构报价之前,软件企业需要做好一些准备工作,以获得…

AI很渴:chatGPT交流一次=喝掉一瓶水,GPT3训练=填满核反应堆

流行的大型语言模型(LLM),如OpenAI的ChatGPT和Google的Bard,耗能巨大,需要庞大的服务器农场提供足够的数据来训练这些强大的程序。对这些数据中心进行冷却也使得AI聊天机器人对水的需求量极大。新的研究表明&#xff0…

小白到运维工程师自学之路 第四十五集 (生产级Redis Cluster部署)

一、概述 Redis Cluster是Redis数据库的一种分布式解决方案,用于在多个节点上分布和 管理数据。它通过将数据分片存储在不同的节点上,实现数据的分布式存储和处理。 Redis Cluster采用主从复制的方式来保证数据的高可用性和容错性,每个主节…

ai绘画二次元软件免费的哪个好?这些二次元ai绘画软件比较好

小伙伴好呀,今天我要和你们分享一个超酷的话题——ai绘画二次元作品!是不是感觉很时髦?没错,现在我们不再局限于传统的绘画方式,而是可以通过ai技术来创造出令人赞叹的二次元世界。你不需要成为一名艺术大师&#xff0…

从文档智能开始洞察一切

文档智能 Document Intelligence 即使在当今数字至上的时代,许多交易仍依赖于发票、合同、法律文件、员工记录、财务报表等纸质文件。当企业希望对纸质记录进行数字化处理,以便搜索、保存和提取有价值的数据以用于决策和市场开拓,AI支持的文…

【教学类-36-05】动物头饰制作2.0(midjounery动物简笔画四图)一页两种动物

作品展示 背景需求: 头饰1.0的教学实践发现,完全可以利用裁剪的边缘纸条作为头饰的套环。因此重新设计word模板,合理布局图案位置,设计了一页2份的头饰。 原来样式:一页一份动物(4个) 现在样式…

16-Linux背景知识

目录 1.Linux是什么? 2.Unix & Linux 发展历程图 3.Linux 发行版 PS:CentOS 和 RedHat 的关系 4.关于 Linux 学习什么? 4.1.基础命令(重点) PS:使用命令相比于使用图形界面的主要好处 4.2.系统编程 &…

IP地址定位在电商行业中的应用

最新数据显示,随着电商行业的快速发展越来越多的企业开始将IP地址定位技术应用于其业务中。IP地址定位是一种利用互联网上的IP地址来确定用户地理位置的技术它通过识别用户的IP地址,从而可以实时追踪和定位他们的位置。 在电商行业中,IP地址定…

Docker 搭建sonarqube,并集成阿里P3C规则

简介 本文安装的sonarqube是7.6-community版本,未安装最新版是因为7.9之后不再支持mysql。如果你安装的是其他版本的sonarqube,那么不要使用插件包中的插件,会有版本兼容性问题。 插件 插件包 插件包中包含java语音插件,汉化插…