微信扫描登录(获取扫描人信息分析) | 学习笔记

简介: 快速学习 微信扫描登录(获取扫描人信息分析)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)微信扫描登录(获取扫描人信息分析)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11462


微信扫描登录(获取扫描人信息分析)


内容介绍:

一、扫码之后跳转规则

二、获取扫描人信息过程

三、腾讯官方提供方法流程


一、扫码之后跳转规则

手机微信扫描二维码调用配置域名地址 http://guli. shop/ api/ucenter/wx/callback,在域名地址里面写程序,做了处理直接请求地址,通过这个到本地

http://localhost:8150/api/ucenter/wx/callback? code=011xlIs7 1HyKJo1qdht71rFLs71XlIsh&state=atguigu

需要做两件事情。

image.png

1、把本地服务端口号改成8150

server. port=8150

2、回调接口地址和域名跳转地址写成─样的地址

@Controller//只是请求地址,不需要返回数据

@RequestMapping(" /api/ucenter/wx")

public class WxApiController{

//2获取扫描人信息,添加数据

@GetMapping("callback")

public String callback (String code, String state){

System. out. println ("code :"+code) ;

System. out. println("state:"+state) :

return "redirect:http://localhost: 3000”;

}

这种规则只是为了测试使用,在实际开发中不需要


二、获取扫描人信息过程

在微信的官方即腾讯官方,把过程已经给规定好了,必须按照他的流程实现扫码登录,下面是详细的说明。

第一步,扫码之后,会执行本地的方法,然后在 callback 方法里可以获取到两个值,这两个值是在跳转的时候传递过来的,一个叫 code,一个叫 state。

State 在生成二维码的时候叫 Atguigu,state 也叫原样传递。这个值作用不是特别大暂时用不到。

code 是每次扫码之后由微信给你返回一个 code,类似于手机的验证码, code 是随机的,唯一的一个值,每次值都是不一样的,主要用到它往外来执行。

第二步,拿着第一部分获取到的 code 值,去请求微信提供的固定地址,注意是固定地址,不需要我们去写, code 得到之后去请求异构固定地址,在里边主要是 access token 和 open ID,access token 是一个访问凭证。

open ID,因为每个人的微信都不一样,微信名称是可以一样的,微信怎么区分每个人的微信呢?不同的微信就是每个微信那个唯一的标识即 open id。

第三步拿着第二步获取到两个值 access_t oken 和 openid,再去请求一个微信提供固定地址,最终可以到微信扫描人信息。比如微信暖称,微信头像等等。

@GetMlapping(callback")

public String callback (String code,String state){

//得到授权临时票据code

System . out.println(code);

System . out.printin(state);

//从 redis 中将 state 获取出来,和当前传入的 state 作比较

//如果一致则放行,如果不一致则抛出异常:非法访问

//向认证服务器发送请求换叹 access_token

String baseAccessTokenUnl m "https : / / api.weixin.qq.cm/sns /oauth2/access_token”+

" ? appid=%s”+

" &secret-Xs”+"&code-%s”+

" &grant_type=authorization_code";

String accessTokenUrl - String.format(baseAccessTokenUrl,

ConstantPropertiesUtil.wx_OPEN_APP_ID,

ConstantPropertiesUtil.wx_OPEN_APP_SECRET,

code);

String result - null;

try {

result - HttpClientUtils.get(accessTokenUrl);

System.out.println("accessToken-m===”+result);

}catch (Exception e){

throw new GuliException (20001,“获职 access_token 失败);

}

//解析 json 字符串

Gson gson - new Gson();

HashMap map - gson.fromis on (result,HashMap . class);

String accessToken(String)map.get(""access_token");Stringopenid(String)map.get("openid”);

//查询数据库当前用用户是否曾经使用过微信登录

lember member  member5ervice.getByOpenid(openid);if (menber - null){

System. out. println(“新用户注册");

//访问微信的资源服务器,获取用户信息

代码比较简单,主要是实现流程,这是微信规定的一个过程,要求必须是这一种步骤,所以必须按照规范来写,其实目的也是为了安全考虑,经过多个步骤多次验证才能得到最终数据。


三、腾讯官方提供方法流程

image.png

微信提供的获取扫描人信息过程:首先,请求登录第三方应用,有第三方应用肯定有第一方和第二方。

比如自己登陆系统,系统本身和自己就属于第一方。若现在登录微信,微信跟自己跟系统是都没有关系的,这叫第三方。请求登录第三方应用,然后里边用到 oauth2这种方式。

有一个请求用户确认,是说当扫完二维码之后,在手机上会有一个界面需要同意或者拒绝,点同意就是用户确认才能获取到用户信息。如果点拒绝,就获取不到用户信息,需要手动的在手机上点确定。

驱动之后,拉起第三方应用或重定向到第三方,带上授权临时票据( code)。临时票据就是验证码,然后临时票据请求地址,他可以得到 access token Openid

首先里边有第一个技术,不管第二步还是第三步,都需要请求地址之后得到值,第一个技术就是可以用它去请求地址,可以理解为请求是在浏览器中写地址,回车后得到,但是现在不需要浏览器,也能做到浏览器写地址,HTTP client 就是发送请求得到结果。

第二个技术是 Jason 转换工具。

在做发送短信的时候,当时用 fastJSON,再换一种转换 gson,这两个都是电子版工具,当然还有其他的工具 jackson 这些都是转工具。

相关文章
|
2月前
|
人工智能 自然语言处理 搜索推荐
评测:AI客服接入钉钉与微信的对比分析
【8月更文第22天】随着人工智能技术的发展,越来越多的企业开始尝试将AI客服集成到自己的业务流程中。本文将基于《10分钟构建AI客服并应用到网站、钉钉或微信中》的解决方案,详细评测AI客服在钉钉和微信中的接入流程及实际应用效果,并结合个人体验分享一些心得。
9932 10
|
2月前
|
存储 前端开发 安全
|
2月前
|
存储 小程序 JavaScript
|
2月前
|
开发工具 Android开发
|
2月前
|
存储 前端开发 Java
|
2月前
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
312 65
ly~
|
7天前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
39 6
|
6天前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
2月前
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `<swiper>` 实现,二是利用 Nut UI 的 `<nut-swiper>` 组件实现。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图

热门文章

最新文章

下一篇
无影云桌面