点餐系统ip地址_spring boot实战——微信点餐系统03:微信授权(用户授权),免费内网穿透(固定ip)...
首先:这个项目是在公众号下单,所以要开发 公众号 相关的功能
然后:再开发
网页授权 : 用于拿到 openid 。
如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。
1、设置域名
2、获取code (用户授权)
3、用code 换取 access_token ; (这一步会把 openid 也带过来)
重要:
设置授权回调地址 :不是那个 js安全接口域名
代码开发:
将WxMpService 进行持久化:
@Component
public class WechatMpConfig {
@Autowired
WechatAccountConfig wechatAccountConfig;
@Bean
public WxMpService wxMpService() {
WxMpService wxMpServiceBean=new WxMpServiceImpl();
wxMpServiceBean.setWxMpConfigStorage(wxMpConfigStorage());
return wxMpServiceBean;
}
@Bean
public WxMpDefaultConfigImpl wxMpConfigStorage(){
WxMpDefaultConfigImpl wxMpDefaultConfigBean=new WxMpDefaultConfigImpl();
wxMpDefaultConfigBean.setAppId(wechatAccountConfig.getMpAppId());
wxMpDefaultConfigBean.setSecret(wechatAccountConfig.getMpAppSecret());
return wxMpDefaultConfigBean;
}
}
从配置文件读取信息: WechatAccountConfig wechatAccountConfig; 上面的注入,读取信息,会用到。
@Component
@Data
@ConfigurationProperties(prefix = "wechat")
public class WechatAccountConfig {
private String mpAppId;
private String mpAppSecret;
}
代码的实际应用:
@Controller
@RequestMapping("/wechat")
public class WechatController {
Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private WxMpService wxMpService;
@Autowired
private WxMpConfigStorage wxMpConfigStorage;
@Autowired
WechatAccountConfig wechatAccountConfig;
@GetMapping("/authorize")
public String authorize(@RequestParam("returnUrl")String returnUrl) throws UnsupportedEncodingException {
//1.配置
//2.调用方法
String url = "http://halfofalemon.ngrok.wendal.cn/sell/wechat/userInfo";
String redirectResult = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO,URLEncoder.encode(returnUrl, "UTF-8"));
logger.info("[微信授权] 获取code redirectResult = {}",redirectResult);
return "redirect:"+redirectResult;
}
@GetMapping("userInfo")
private String userInfo(@RequestParam("code")String code,@RequestParam("state")String returnUrl){
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
} catch (WxErrorException e) {
logger.error("[微信网页授权] 获取AccessToken错误 {}",e);
throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());
}
String openId = wxMpOAuth2AccessToken.getOpenId();
logger.info("[微信授权] 获取openId openId = ",openId);
return "redirect:"+returnUrl + "?openId="+openId;
}
}
注:
内网穿透: 微信回调需要使用内网穿透
使用方法:
1、下载客户端和配置文件
2、官方上面的例子输入下面就可以启动服务
ngrok -config ngrok.yml 8080
3、有点蠢,原样照搬, 进入了我的文件夹,启动ngrok
d:\software3\ngrok_win\ngrok -config ngrok2.yml 8080
提示找不到配置文件。
4、实际上,配置文件也要完整路径:
d:\software3\ngrok_win\ngrok -config d:\software3\ngrok_win\ngrok2.yml 8080
配置前端项目:
前端项目在 /opt/code/sell_fe_buyer
1、到 config 文件 修改 index.js 文件 。
sellUrl : 项目地址 。
openidUrl : 获取openid 的地址。
wechatPayUrl :
2、回到前端根目录 : npm run build
重新构建项目:构建好,项目会在 前端根目录的 dist
将构建好的项目发布: cp -r dist/* /opt/data/wwwroot/sell
end
点餐系统ip地址_spring boot实战——微信点餐系统03:微信授权(用户授权),免费内网穿透(固定ip)...相关推荐
- frp内网穿透-公网IP低成本使用高性能kali
frp内网穿透-公网IP低成本使用高性能kali 1.frp Github项目地址:https://github.com/fatedier/frp 找到最新的releases下载,系统版本自行确认. ...
- 异地远程连接在家里的群晖NAS【无公网IP,免费内网穿透】
群晖NAS,少不了有在外网远程访问的需求.尽管群晖有自带的QuickConnect,但是使用起来不是很理想,而且,现在基本不会被分配到公网IP,个人被分配到的基本都是内网IP. 而在没有公网IP的情况 ...
- 无公网IP,使用ZeroTier免费内网穿透
无公网IP,使用ZeroTier免费内网穿透 有公网IP的用户还是建议使用端口转发的方式(速度最理想) 没有固定的公网IP,想要在家里或外地访问公司的服务器,常见的实现方案向日葵.teamviewer ...
- 没有公网IP,快速免费内网穿透
在大内网环境下,没有公网IP非常普遍.而如何没有公网IP的环境下,外网访问内网,常见通过内网穿透来实现,毕竟自己买一个公网IP,费用可不小. 内网穿透,主要通过第三方公网IP服务器进行数据转发,不需要 ...
- 无需设置路由器,无需公网ip 实现永久免费内网穿透
用网云穿在 N1 盒子上实现 Openwrt 的内网穿透 软路由器情况 N1(已经刷入 Armbian) 中使用 docker 创建 Openwrt 容器作为旁路由. 我的内网 ip 信息 内网 IP ...
- 免费内网穿透3389端口,实现外网远程桌面内网【无需公网IP】
3389端口,是远程桌面的服务端口.我们可以通过3389端口,用Windows自带的远程桌面连接,来远程连接服务器设备,实现如同操作本地电脑一般的场景. 在同个局域网下,只需要启用"远程桌面 ...
- Win软件 - 教你正确使用 Win10 专业版系统自带远程桌面(免费内网穿透)
疫情反反复复的当下,有时候会遇到需要居家办公的情况,但在办公室的电脑上仍有很多重要资料需要存取,且办公室所在的局域网中也有很多相关资源需要被访问(如文件共享服务器.OA 系统等).如何能在家通过远程处 ...
- 无需公网IP,免费内网穿透【cpolar】访问内网服务
由于IPV4公网IP的枯竭,运营商现在基本不会分配公网固定IP,被分配到的普遍是内网IP.而没有公网IP,可以做内网穿透来实现外网访问内网,通过第三方公网IP服务来进行数据转发. 这里推荐一款免费好用 ...
- 免费内网穿透工具(网络通),无需公网IP,无需设置路由器
介绍一款免费的简单易用工具 网络通 这款工具永久免费内网端口映射,内网穿透软件,可轻松访问连接内网. 不需设置路由器,不需公网ip,不需固定ip,不需动态域名,用户可免费添加多个映射,适合在公司,小区 ...
最新文章
- db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
- 体系结构方案 -BI 系统的前置计算
- javascript 对象详解
- 文本转换成htmldocument
- 毕业之后......
- 改写DataCogs在MOSS列表中实现三级联动字段
- SYBASE的管理(三)
- springcloud gateway ribbon使用_Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批!...
- 【交往智慧】005.做一个愿意聆听的人
- 专业人士对《程序员修炼之道》的赞誉
- Java简单从文件读取和输出
- com.netflix.zuul.exception.ZuulException: Forwarding error
- 显卡是什么?显卡和Graphics的区别在哪里?
- java阿里云文本反垃圾sdk调用详解
- python_多点拟合曲线并计算曲率半径
- java生成订单唯一编号_java唯一订单号生成
- linux执行脚本提示文件忙,linux定时执行脚本文件fgo 封号吗
- linux下删除oracle数据库实例
- 武器装备科研生产单位保密资格标准》内容试题(2017年版)( 共 331 题 )
- mac pdf去水印_如何在Mac上为PDF添加水印
热门文章
- frame越过另一个frame_一个价值2万美元的Facebook DOM XSS漏洞
- python异常处理输入不是整数_Python异常处理大全(二)
- (二)预处理时间序列数据用于AI预测和异常检测
- SQL Server中的假期表和GetWorkDays函数
- 用于数据输入的基本WPF窗口功能
- 加速ASP.NET Core WEB API应用程序——第1部分
- 不使用输入框如何实现下拉_使用INFINITE AJAX SCROLL实现下拉加载效果
- linux下访问西门子S7,Siemens SIMATIC S7-1200 CPU开放重定向漏洞(CVE-2015-1048)
- 初步创建vue/cli工程教程
- 华为怎么申请鸿蒙商标,华为已注册华为鸿蒙商标是怎么回事 华为鸿蒙商标注册...