微信扫描登录(功能完善) | 学习笔记

简介: 快速学习 微信扫描登录(功能完善)

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

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


微信扫描登录(功能完善)


内容介绍:

一、功能完善

二、Application.propertier 代码演示


一、功能完善

1、已经登录过的用户不用重复录入,只录入新用户

将”拿着得到的 access_token 和 openid ,再去请求微信提供固定的地址,获取到扫描人信息,访问微信的资源服务器,获取用户信息”步骤移动到”判断数据表里面是否存在相同微信信息,根据 openid 判断”里面

代码如下:

//使用 json 转换工具

Gson Gson gson = new GsonO:

HashMap mapAccessToken =gson.fromJson(accessTokenInfo, HashMap.class) String access token=(

String)mapAccessTokenget( access token");

String openid =(String)mapAccessToken.get("openid);

//把扫描人信息添加数据库里面

//判断数据表里面是查存在相同微信信息,根据 openid 判断

Ucenterlember member =memberService.getOpenIdMember(openid): if(member == null){

//memeber 是空,表没有相同微信数据,进行酒加

//3拿着得到 accsesstoken 和 openid,再去请求微信提供固定的地址,获取到扫描人信息

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

StringbaseUserInfoUrl ="https://api.weixin.qq.com/sns/userinfo"+

"?access_token-%s”+"&openid-%s”;

//拼接两个参数

String userInfoUrl = String.format(

baseUserInfoUrl,

access_token, openid):

//发送请求

String userInfo= HttpClientUtils.get(userInfoUrl);

//获取返回 userinfo 字符串扫描人信息

HashMap userInfoMap=gson.fromJson(userInfo,HashMap.class);

String nickname=(String)userInfoMap.get("nickname”);

//昵称

String headimaurl=(String)userInfoMap.get("beadimaurl");

//头像

member =new UcenterMember0: member.setOpenid(openid):

member. setNickname(nickname) member.setAvatar(headimgurl) memberService.save(member);

//最后:返回首页面

return "redirect:http://localhost:3000"}catch(Exception e){

throw new GuliException(20001,"登录失败):}

//1生成微信扫描二维码@GetMapping(-login)

public String getWxCode0{

//固定地址,后面拼接参数

String url="https://open.weÃxin.qg.com/”+

connect/arconnect?appid="+ConstantixUtils. RX OPEN APP ID+"&response type=code".

2、扫描之后,在首页面显示微信信息,比如昵称或者头像

之前登录之后显示,在首页面从 cookie 获取数据显示

代码如下:

Var userStr = cookie.get(‘guil_ucenter’)

//从 cookie 获取数据显示

现在也可以按照以上方式,把扫码之后的信息也放到 cookie 里面,跳转到首页面进行,但是把扫描数据放到 cookie 有问题,因为 cookie 无法实现跨域访问。

最终解决方案:

根据微信信息使用 jwt ,生成 token 字符串,把 token 字符串通过路径传播到首页面

代码如下:

String jwtToken = JwtUtils. get. Jwt Token(member. getId(), member. getNickname ()) ;

//做法:使用 jwt 根据 member 对象生成 token 字符串

代码如下:

return”redirect :http://localhost:3000?token="+jwtToken ;

} catch(Exception e) {

throw new GuliException(20001,"登录失败”) ;

//最后:返回首页面,通过路径传递 token 字符串


二、Application.propertier 代码演示

代码1-10

#服务端口

server.port=8150

#服务名

spring.application.name=service ucenter

# mysq1数据库连接

spring. datasource. driver-class name-com.mysql.cj.jdbc. Driver

spring.datasource.url=jdbc:mysql://localhost:3306/guliserverTimezoneGMT%2B8spring.datasource. username-root spring. datasource. password root

相关文章
|
9天前
|
小程序 前端开发 算法
|
24天前
|
移动开发 前端开发 Android开发
开发指南059-App实现微信扫描登录
App是用uniapp开发的,打包为apk,上传到安卓平板中使用
|
25天前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
73 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
2月前
|
算法 JavaScript 前端开发
切西瓜法实现微信抢红包功能
该文章介绍了使用“切西瓜法”和“栅栏法”两种算法来模拟微信抢红包的随机分配机制,并通过具体的JavaScript代码实现了红包金额的公平随机分配过程。
切西瓜法实现微信抢红包功能
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
72 0
|
2月前
|
人工智能 前端开发 JavaScript
MacTalk 测评通义灵码,实现“微信表情”小功能
墨问西东创始人池建强分享了团队使用通义灵码的经验。
|
2月前
|
小程序 API 开发工具
使用python 实现微信签到提醒功能
【9月更文挑战第4天】使用python 实现微信签到提醒功能
66 2
|
3月前
|
Web App开发 缓存 小程序
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
|
3月前
|
小程序 前端开发 开发者
|
3月前
|
小程序 前端开发 API
Ant Design Mini 问题之在微信小程序中,由于不支持slot特性,Ant Design Mini的什么组件功能受到了限制,如何解决
Ant Design Mini 问题之在微信小程序中,由于不支持slot特性,Ant Design Mini的什么组件功能受到了限制,如何解决

热门文章

最新文章

下一篇
无影云桌面