当前位置:网站首页>微信开放平台扫码登录[通俗易懂]
微信开放平台扫码登录[通俗易懂]
2022-07-01 21:46:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
微信开放平台扫码登录的功能只有已经认证过的微信公众号才可以使用,很多学习微信的同学可能没办法使用这个功能,但是别担心,以下网址中有很多账号可以使用:
应用一: 应用名称:漫道 AppID:wx2a6cf9373f278ed2 Appsecret:b32af04d9062ebc44b3f5d8b87a5a48e 回调域名配置:testxdclass.tunnel.qydev.com |
|---|
应用二: 应用名称:狼途 AppID:wx025575eac69a2d5b Appsecret:72024309d9751d33e97e9d2a66e89944 回调域名配置:test16web.tunnel.qydev.com |
|---|
首先一个问题就是项目的域名和微信授权域名不一致,没办法把自己的域名设置到,比如我的项目域名为 t238997p11.qicp.vip ,那么希望的是,当访问微信后台授权的域名时,能自动跳转到我自己的域名,这样就能运行后台代码。
———————————————————————————————————————–
以我自己使用的账号为例:
openAppId: wx277996c4d2772104 #开放平台appid
openAppSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxx #开发平台appSecret
wechatOpenAuthorize: testdev.tunnel.qydev.com #回调域名一、第一步:安装nginx进行代理
1、下载安装nginx :官方网址:http://nginx.org/en/download.html
点击进入官网,下载稳定版
解压后点击nginx.exe,打开任务管理器,看到如下图说明nginx已开启
2、利用nginx进行代理,使得当访问 testdev.tunnel.qydev.com 这个授权域名的时候,能够访问到我自己的后台代码。
即,当访问 http://testdev.tunnel.qydev.com 【80端口省略不写】时等价于访问127.0.0.1:8080
(1)配置nginx.conf
注意:A:proxy_pass 代理的是upstream中的内容,并且upstream后面的名称一定要与proxy_pass 后面的一致
B:监听的端口号一定是80,如果80端口已被占用一定要先解除占用
C:server_name 是微信的已授权域名
upstream sell { server 127.0.0.1:8080; }
server { listen 80; server_name testdev.tunnel.qydev.com;
location / { proxy_pass http://sell; }
}
(2)修改hosts文件(在C:\Windows\System32\drivers\etc目录下)
添加:127.0.0.1 testdev.tunnel.qydev.com
二、SpringBoot后台代码
@Controller
@RequestMapping("/wechat")
@Slf4j
public class WechatController {
@Autowired
private WxMpService wxOpenService;
/**
* 微信开放平台授权登录
*
* @param returnUrl
* @return
*/
//访问:http://127.0.0.1:8080/sell/wechat/qrAuthorize?returnUrl=http://www.imooc.com
@GetMapping("/qrAuthorize")
public String qrAuthorize(@RequestParam("returnUrl") String returnUrl){
String url = "http://testdev.tunnel.qydev.com/sell/wechat/qrUserInfo";
String redirectUrl = wxOpenService.buildQrConnectUrl(url,WxConsts.QrConnectScope.SNSAPI_LOGIN, URLEncoder.encode(returnUrl));
log.info("微信开放平台授权获取code,redirectUrl={}",redirectUrl);
return "redirect:" + redirectUrl;
}
/**
* 微信开放平台扫码获取openid
*
* @param code
* @param returnUrl
* @return
*/
@GetMapping("/qrUserInfo")
public String qrUserInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl){
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
wxMpOAuth2AccessToken = wxOpenService.oauth2getAccessToken(code);
} catch (WxErrorException e) {
log.info("[微信网页授权] {}",e);
throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());
}
//获取openid
String openId = wxMpOAuth2AccessToken.getOpenId();
return "redirect:" + returnUrl+"?openid=" + openId;
}
}三、结果
访问: http://127.0.0.1:8080/sell/wechat/qrAuthorize?returnUrl=http://www.imooc.com
微信扫码后跳转到returnUrl后的回调地址 http://www.imooc.com,并返回openid
地址栏变为 https://www.imooc.com/?openid=XXXXXJGsKKpEqGMEt7V7XXXXXX
按照上述步骤微信扫码登录就实现了!!如果还有什么问题欢迎指教!!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130289.html原文链接:https://javaforall.cn
边栏推荐
- 配置筛选机
- Airserver mobile phone third-party screen projection computer software
- IDA动态调试apk
- Why does blocprovider feel similar to provider?
- Little p weekly Vol.11
- Pytorch sharpening chapter | argmax and argmin functions
- PCB plug hole technology~
- Interview question: what is the difference between MySQL's Union all and union, and how many join methods MySQL has (Alibaba interview question) [easy to understand]
- 比较版本号[双指针截取自己想要的字串]
- MySQL learning notes - SQL optimization of optimization
猜你喜欢
随机推荐
内存导致的电脑游戏中显示hdmi无信号 从而死机的情况
PHP reflective XSS, reflective XSS test and repair
MQ learning notes
Separate the letters and numbers in the string so that the letters come first and the array comes last
Yyds dry goods inventory # solve the real problem of famous enterprises: egg twisting machine
linux下清理系统缓存并释放内存
Aidl basic use
【juc学习之路第8天】Condition
EasyExcel 复杂数据导出
辅音和声母的区别?(声母与辅音的区别)
MySQL的存储过程
Indicator trap: seven KPI mistakes that it leaders are prone to make
mysql 学习笔记-优化之SQL优化
Fundamentals - IO intensive computing and CPU intensive computing
焱融看 | 混合云时代下,如何制定多云策略
News classification based on LSTM model
Test cancellation 1
Unity uses SQLite
【MySQL】explain的基本使用以及各列的作用
详解LockSupport的使用









