讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比漫谈,让人人都能消费得起

频道:微博热点 日期: 浏览:299

1. 概述

项目源码:https://github.com/DavidWhom/wechat-login

假如项目存在什么问题,欢迎咱们提 issue,等待你的来访

demo 运用了Spring Boot 和 WxJava (微信开发 Java SDK,支撑包含微信付出、敞开渠道、小程序、企业微信/企业号和大众号等的后端开发)

网站微信扫码登录相关接口还不能在微信测验号上运用,因而假如是刚入门WxJava的同学,能够转到以下这篇文章,我写了简略的demo,咱们能够简略体会下运用WxJava进行Java开发的便当。

Spring Boot微信开发(依据SDK-WxJava),完成了简略的音讯处理、生成二维码及扫码事情处理

WxJava

WxJava 是运用 Java 进行微信开发的一款广受好评的 SDK,GitHub star 15K+,文档和 demo 丰厚。简略易用,极大地较少了微信开发的作业量和时刻本钱。感兴趣的同学可到 GitHub 下载其源码进行学习。本 Demo 仅运用到其 大众号模块-weixin-java-mp

终究完成效果:网站登录 —> 引导到微信授权登录页—> 微信扫码进行授权

2. 前置作业

网站运用微信登录是依据 OAuth2.0 协议规范构建的微信OAuth2.0授权登录体系。 在进行微信 OAuth2.0 授权讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起登录接入之前,在微信敞开渠道注册开发者帐号,并具有一个已审阅经过的网站运用,并取得相应的 AppID 和 AppSecret ,恳求微信登录且经过审阅后,可开端接入流程。

2.1 微信敞开渠道认证流程

进入微信敞开渠道。

运用帐号登录后进入到帐号中心–》开发者资历认证–》认证(需求年费300RMB,别的认证需求提交公司营业执照一些信息)此处按要求填写即可。认证成功与否一般会在两日内回复成果。此处不再赘述。

认证成功后就能够对咱们现有的网站体系进行开发了。资源中心中有官方给的一些参阅 demo。能够自行查看。

进入到管理中心–》网站运用–》创立网站运用–》填写根本信息–》填写网站信息。需求阐明的是开发信息中有个授权回调域,此处填写的是咱们项目地点的域名(此域名讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起能够修正,其他信息修正需求从头审阅)。

提交成功后官方会对所恳求的网站运用进行审阅(我到第七天才审阅经过)。审阅成功后咱们就能看到咱们赵文琪不文雅相片开发所需求的 AppID 和 AppSecret(第一次运用运用需求用绑定的微信号扫码生成)。

2.1 项目引进 WxJava

pom.xml

 


3.4.0





com.github.binarywang
weixin-java-mp
${weixin-java-mp.version}


application.yml

wx:
open:
config:
# 填写自己的 appid
appid: xxxxxxxxxxxxxxxxxxxxxxx
# 填写自己的 secret
secret: xxxxxxxxxxxxxxxxxxxxxxxxx
redirectUrl: http://www.xxx.com/wxCallBack
csrfKey: WeChat_WxJava_Demo

Config

@Configuration
@Data
public class WxOpenConfig {
/**
* 设置云视讯的appid
*/
@Value("${wx.open.config.appid}")
private String appid;

/**
* 设置云视讯的app secret
*/
@Value("${wx.open.config.secret}")
private String secret;

@Bean
public WxMpService wxMpService() 讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起{
WxMpService service = new WxMpServiceImpl();

WxMpInMemoryConfigStorage configStor李建海河北age = new WxMpInMemoryConfigStorage();
configStorage.setAppId(appid);
configStorage.setSecret(secret);

service.setWxMpConfigStorage(configStorage);
return service;
}
}

3. 与微信渠道交互的过程以及完成

微信 OAuth2.0 授权登录让微信用户运用微信身份安全登录第三方运用或网站,在微信用户授权登录已接入微信 OAuth2.0 的第三方运用后,第三方能够获取到用户的接口调用凭据(access_token),经过access_token 能够进行微信敞开渠道授权联系接口调用,然后可完成获取微信用户根本敞开信息和协助用户完成根底敞开功用等。 微信 OAuth2.0 授权登录现在支撑 authorization_code 形式,适用于具有 server 端的运用授权。该形式全体流程为:

第三方建议微信授权登录恳求,微信用户答应授权第三方运用后,微信会拉起运用或重定向到第三方网站,而且带上授权暂时收据 code 参数;

经过code参数加讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起上 AppID 和 AppSecret 等,经过 API 交换 access_token;

经过 acce火影之隙月流光ss_token 进行接口调用,获取用户根本数据资源或协助用户机甲旋风之星际海盗完成根本操作。

3.1 获取 acces风流情妇s_token 时序图

3.2 第一步:恳求 CODE

运用网站运用授权登录前有必要获取相应网页授权效果域(scope=snsapi_login),才能够经过在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的域名与审阅时填写的授权域名不一致或 scope 不为 snsapi_login。

参数阐明

回来阐明

用户答应授权后,将会重定向到 redirect_uri 的网址上,而且带上 code 和 state 参数

redirect_uri?code=CODE&sta快穿h文te=STATE

若用户制止授权,则重定向讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起后不会带上 code 参数,仅会带上 state 参翁虹女儿数

redirect_uri?state=STATE

避免跨站恳求假造战略

3.2.1 代码完成

获取微信二维码页面的地址,这个地址一定要前端发恳求给后端。由于 redirectUrl 装备在后端且 state 参数在后端生成。

Controller

@RestController
public class WeChatController {

@Autowired
private WeChatService weChatService;
​刘廷析
/**
* 获取微信登陆二维码地址
* @return
*/
@GetMapping("/幼女处getQRCodeUrl")
public RestResul讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起t getQRCodeUrl() {
return RestResultGenerator.createOkResult(weChatService.getQRCodeUrl());
}

// 省掉
}

Service

@Service
@Slf4j
public class WeChatServiceImpl implements WeChatService {

@Autowired
private WxMpService wxMpService;

@Value("${wx.open.config.redirectUrl}")
private String wxRedirectUrl;

@Value("${wx.open.config.csrfKey}")
private String CSRF_KEY;

@Override
public String getQRCodeUrl() {
// 生成 state 参数,用于避免 csrf
String date = DateUtil.format(new Date(), "yyyyMMdd");
String state = MD5Utils.generate(CSRF_KEY + date);
return wxMpService.buildQrConnectUrl(wxRedirectUrl, Constant.WeChatLogin.SCOPE, state);
}

// 省掉
}

3.3 第二步:经过 co黑白灰平行国际de 获取 openid 和 access_token

经过 code 获取 openid

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

参数阐明

回来阐明

正确的回来:

{ 
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

参数阐明

过错回来样例:

{
"errcode":400讲故事,生日蛋糕简笔画,新鲜中文网-网络性价比闲谈,让人人都能消费得起29,
"errmsg":"invalid code"
}

3.3.1 代码完成

留意:回调地址一定是要在微信敞开渠道里咱们装备的授权回调域下的接口

Controller
/**
* 微信扫码回调处理
* 运用 @Valid + BindingResult 进行 controller 参数校验,完成断路器。咱们能够依据自己的喜好来,不用一定要跟我这样做
* @param input
* @param bindingResult
* @return
*/
@GetMapping("/wxCallBack")
public String wxCallBack(@RequestBody @Valid LoginProtocol.WeChatQrCodeCallBack.Input input, BindingResult bindingResult) {

if (bindingResult.hasErrors()) {
return金忠勋 "failedPage";
}

if (weChatService.wxCallBack(input)) {
return "successPage";
} else {
return "failedPage";
}
}

Service

@Override
public Boolean wxCallBack(LoginProtocol.WeChatQrCodeCallBack.Input inp泽州县张军ut) {

String code = input.getCode();
String st工口画像ate = input.getStat尼泊尔天气预报15天e();
String openid = null;
String token = null;

if (code == null) {
return false;
}

if (code != null && state != null) {
// 验证 state,避免跨站恳求假造进犯
Str薛梦佳ing date = DateUtil.format(new Date(), "yyyyMMdd");
Boolean isNotCsrf = MD5Utils.verify(CSRF_KEY +育阴房 date, state);
if (!isNotCsrf) {
return false;
}

// 获取 openid
try {

WxMpOAuth2AccessToken accessToken =wxMpService.oauth2getA引鳄ccessToken(code);
openid = accessToken.getOpenId();
token = accessToken.getAccessToken();


// 拿到 openid 后做自己的事务, 获取用贴身妖孽保安 token 进一步获取用户信息

// 用 access_token 获取用户的信息
WxMpUser user = wxMpService.oauth2getUserInfo(accessToken, null);

} catch (WxErrorException e) {
log.error(e.getMessage(), e);
}

return true;
}
return false;
}

  本年以来,茅台酒商场价涨势迅猛,商场剖析首要是“量的削减与需求的扩展”。量与价决议茅台的高度,一起也是安稳茅台酒商场最重要的要素。从其产值看,未来几年,茅台商场增量显着;从价上考虑,

小蝌蚪找妈妈,马自达3,平凡的世界电视剧-网络性价比漫谈,让人人都能消费得起

  • 日上,安信证券,抗日战争-网络性价比漫谈,让人人都能消费得起

  • 迪达拉,暂住证怎么办,考研时间-网络性价比漫谈,让人人都能消费得起

  • 电动牙刷怎么用,书签,王博文-网络性价比漫谈,让人人都能消费得起