微信扫描登录(生成二维码) | 学习笔记

本文涉及的产品
.cn 域名,1个 12个月
简介: 快速学习 微信扫描登录(生成二维码)

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

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


微信扫描登录(生成二维码)


内容介绍:

一、添加配置

二、创建常量类

三、生成微信扫描二维码

四、测试


微信操作需要 id 和秘钥和域名地址,这些值都是固定的,把这些固定值写入到配置文件中,创建一个内读取该配置文件值


一、添加配置

在 service-ucenter 模块配置文件微信 id、秘钥和域名地址,在实际项目中这几个值都是由公司提供的。

#微信开放平台 appid

wx. open. app_id=wxed9954cO1bb89b47

#微信开放平台 appsecret

wx. open. app_secret=a7482517235173ddb4083788de60b90e

#微信开放平台重定向 url

wx. open. redirect_url=http://guli. shop/ api/ucenter/wx/callbac


二、创建常量类

创建 util 包,创建 ConstantPropertiesUtil.java 常量类,创建类读取配置文件内容。

import org. springframework. beans.factory.InitializingBean;

import org.springframework. stereotype.Component ;

@Component

public class ConstantWxUtils implements InitializingBean {

//添加 Value 注解读取内容

//读取微信 id

@Value(""$ fwx. open. app_id}"")private String appId;

//读取微信秘钥

@Value (""$ {wx. open. app_secret}")private String appSecret;

//读取域名地址

@Value(""$ iwx. open.redirect_url}"")private String redirectUrl;

@Override

//写出常量进行赋值操作

public static String WX_OPEN_APP_ID;

public static string WX_OPEN_APP_SECRET;

public static String WX_OPEN_REDIRECT_URL;

public void afterPropertiesSet ( throws Exception {

//给常量依次赋值

wX_OPEN_APP_ID = appId;

wX_OPEN_APP_SECRET = appSecret;

wX_OPEN_REDIRECT_URL = redirectUr1;

}


三、生成微信扫描二维码

直接请求微信提供固定的地址,向地址后面拼接参数,第三方使用网站应用授权登录前请注意已获取相应网页授权作用域

(scope=snsapi_Jogin ),则可以通过在 PC 打开以下链接:

https:/open.weixin.qq.com/connect/qrconnect?(提供固定的地址)

appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat redirect若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致 e 或scope 不为 snsapi_login.

参数说明

1.Appid:是必须的,应用唯一标识

2.Redirect url是必须的,使用编码对连接处理

3.Response type:是必须的,填 code 是固定的

4.scoppe:是必须的,应用播权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写 snsapi_login 即可。

5.state:不是必须的,用于保持请求和回调的状志,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击〈跨站请求伪适攻击〕,建议第三方带上该参数,可设置为简单的随机烧边口 session 进行校验。

具体编码:

@CrossOrigin

@RestController //只是请求地址,不需要返回地址

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

public class WxApiController {

//生成微信扫描二维码,提交方式为 GetMapping

@GetMapping("login")

//区别于之前的写法,之前每次返回 R 对象,R 对象的目的是有一个统一返回的结果,而现在是需要生成二维码,并不需要返回一串数据,请求地址来得到生成二维码

public String getWxCode( {

//请求微信地址,表示通过 return 重定向到地址

http://localhost :3000

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

(1)方法一,字符串拼接

//固定地址,后面拼接参数,用?&名称值做拼接

String url = "https:// open. weixin. qq. com/"+

"connect/qrconnect?appid="+ ConstantWxUtils.WX_OPEN_APP_ID+"&response_type=code";

//appid 拼接微信 id 值,再加上&符号做 response 拼接,拼接 code 固定值,依次类推。

该方法的缺点是所有内容要依次拼接,很容易写错,多一个或者少一个内容都会报错。实际当中效率也很低,不建议使用该方法。

(2)方法二

定义一个固定的地址,在地址后面将参数位置后面加上%s(占位符,表示里面需要传参数),微信开放平台授权baseUrlss 相当于?代表占位符

//微信开放平台授权baseurl

String baseUrl = "https://open. weixin. qq. com/connect/qrconnect”+

“?appid-%s"+

“&redirect_uri=%s”+

“&response_type=code”+

“&scope=snsapi_login”+

“&state一%s”+

“#wechat _redirect";

//设置%s 里面的值

String atguigu = String.format(

//会产生返回值,返回值中有固定地址和参数

baseUrl,

ConstantWxUtils.WX_OPEN_APP_ID,

ConstantWxUtils.WX_OPEN_REDIRECT_URL,

"atguigu”

);

//请求一个固定地址,并且后面拼接参数,写出地址加上参数,参数位置后面加上%s(占位符,表示里面需要传参数),String.format 使用方法设定值,最终使地址里面包含固定地址和参数

//重定向到请求微信地址里面

return"redirect”+url

}

}

//对 redirect_url 进行 URLEncoder 编码

//通过工具类取到

StringredirectUrl= ConstantWxUtils.WX_OPEN_REDIRECT_URL;

//try catch 捕获异常

try {

//编码方式为"utf-8",编码之后返回 redirecturl

redirectUrl = URLEncoder. encode(redirectUrl,enc: "utf-8");

} catch(Exception e){

//设置%s 里面的值

String atguigu = String.format(

//会产生返回值,返回值中有固定地址和参数

baseUrl,

ConstantWxUtils.WX_OPEN_APP_ID,

redirecturl

"atguigu”

);

通过地址向里面传参数,最后请求改地址,就能在网页中生成二维码,地址需要编码URLEncoder,编码的目的是对地址中的特殊符号做处理。


四、测试

1.启动服务器,

访问 http://localhost:8006/api/ucenter/wx/login

出现问题:返回的是一串字符串并没有重定向,正确效果是对该地址做出请求操作。

修改将注解 restcontroller 换成 controller,只是请求地址,不需要返回数据。

2.重新测试

成功生成扫描二维码

相关文章
|
9天前
|
小程序 前端开发 算法
|
24天前
|
移动开发 前端开发 Android开发
开发指南059-App实现微信扫描登录
App是用uniapp开发的,打包为apk,上传到安卓平板中使用
|
29天前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
37 0
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
72 0
|
3月前
|
存储 前端开发 安全
|
3月前
|
存储 小程序 JavaScript
|
3月前
|
开发工具 Android开发
|
3月前
|
小程序 JavaScript API
|
3月前
|
存储 前端开发 Java

热门文章

最新文章

下一篇
无影云桌面