微信网页授权:
官方文档: https://mp.weixin.qq.com/wiki
 支付文档:https://pay.weixin.qq.com/wiki/doc/api/index.html

调试:https://natapp.cn
第三方SDK:https://github.com/Wechat-Group/weixin-java-tools

手工获取openid
1.设置域名
2.用户同意授权,获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=(自己的appid)&redirect\_uri=自己的域名&response\_type=code&scope=SCOPE&state=STATE#wechat\_redirect

-----------换取access_token--------
3.创建方法测试是否能跳转

public class WeixinController {
@GetMapping("/auth")
public void auth(@RequestParam("code") String code){
log.info("进入auth方法"); }
}

  

4.用户同意授权后得到CODE,页面跳转至 redirect_uri/?code=CODE&state=STATE
5.通过CODE换取网页授权

@RestController
@RequestMapping("/weixin")
@Slf4j
public class WeixinController { @GetMapping("/auth")
public void auth(@RequestParam("code") String code) {
log.info("进入auth方法。。。");
log.info("code={}", code); String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxd898fcb01713c658&secret=29d8a650db31472aa87800e3b0d739f2&code=" + code + "&grant_type=authorization_code";
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject(url, String.class);
log.info("response={}", response);
}
}

  

6.拉去用户信息

二   sdk获取openid
https://github.com

1).引入依赖

<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>2.7.0</version>
</dependency>

2.构造授权url

所需配置文件

public class WechatMpConfig {

    @Autowired
private WechatAccountConfig accountConfig; @Bean
public WxMpService wxMpService() {
WxMpService wxMpService = new WxMpServiceImpl();
wxMpService.setWxMpConfigStorage(wxMpConfigStorage());
return wxMpService;
} @Bean
public WxMpConfigStorage wxMpConfigStorage() {
WxMpInMemoryConfigStorage wxMpConfigStorage = new WxMpInMemoryConfigStorage();
wxMpConfigStorage.setAppId(accountConfig.getMpAppId());
wxMpConfigStorage.setSecret(accountConfig.getMpAppSecret());
return wxMpConfigStorage;
}
}

  项目配置文件中配置

wechat:
mpAppId:自己的appid
mpAppSecret: 自己的 mpAppSecret

  微信账号相关的写个配置

package com.imooc.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import java.util.Map; /
@Data
@Component
@ConfigurationProperties(prefix = "wechat")
public class WechatAccountConfig { /**
* 公众平台id
*/
private String mpAppId; /**
* 公众平台密钥
*/
private String mpAppSecret; /**
* 开放平台id
*/
private String openAppId; /**
* 开放平台密钥
*/
private String openAppSecret; /**
* 商户号
*/
private String mchId; /**
* 商户密钥
*/
private String mchKey; /**
* 商户证书路径
*/
private String keyPath; /**
* 微信支付异步通知地址
*/
private String notifyUrl; /**
* 微信模版id
*/
private Map<String, String> templateId;
}

  获取用户code,重定向获取openid

@Controller
@RequestMapping("/wechat")
@Slf4j
public class WechatController { @Autowired
private WxMpService wxMpService; @Autowired
private ProjectUrlConfig projectUrlConfig;
//获取code重定向到info
@GetMapping("/authorize")
public String authorize(@RequestParam("returnUrl") String returnUrl) {
//1. 配置
//2. 调用方法
String url = projectUrlConfig.getWechatMpAuthorize() + "/sell/wechat/userInfo";//重定向到info里面
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_BASE, URLEncoder.encode(returnUrl));
return "redirect:" + redirectUrl;
}
//获取openid和url并重定向
  @GetMapping("/userInfo")
  public String userInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl) {
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
} catch (WxErrorException e) {
log.error("【微信网页授权】{}", e);
throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(), e.getError().getErrorMsg());
} String openId = wxMpOAuth2AccessToken.getOpenId(); return "redirect:" + returnUrl + "?openid=" + openId;
} }

  

 

  前端调试

用手机访问到项目,域名不同,手机不能直接访问,需使用抓包工具fiddler,将所有请求先转发到电脑

用电脑IP设置手机http代理,端口设为8888,fiddler默认端口为8888

微信授权网页获取用户openiid的更多相关文章

  1. 微信授权、获取用户openid-纯前端实现——jsonp跨域访问返回json数据会报错的纯前端解决办法

    近来,倒霉的后台跟我说让我拿个openid做微信支付使用,寻思很简单,开始干活. 首先引导用户打开如下链接,只需要将appid修改为自己的就可以,redirect_url写你的重定向url https ...

  2. 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)

    本文将介绍基于Senparc.Weixin微信开发框架来实现网页授权来获取用户基本信息.先生成包含授权及回调url信息的二维码:用户用微信扫描之后,被要求授权以获取Ta的用户基本信息:用户授权后,通过 ...

  3. 微信公众平台网页获取用户OpenID方法

    下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧.用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接 ...

  4. Android之QQ授权登录获取用户信息

    有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...

  5. [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息

    因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...

  6. 如何使用Fiddler抓取APP接口和微信授权网页源代码

    Fiddler,一个抓包神器,不仅可以通过手机访问APP抓取接口甚至一些数据,还可以抓取微信授权网页的代码. 下载安装 1. 下载地址(官网):  https://www.telerik.com/do ...

  7. Java springboot支付宝小程序授权,获取用户信息,支付及回调

    参考官方文档https://opendocs.alipay.com/mini/introduce/pay 支付宝小程序的支付和微信小程序的支付一样第一步都是要获取到用户的唯一标识,在微信中我们获取到的 ...

  8. 微信小程序 获取用户信息并保存登录状态

    微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml

  9. Laravel wxxcx 微信小程序获取用户信息

    wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...

随机推荐

  1. Android利用方向传感器获得手机的相对角度实例说明

    http://www.jb51.net/article/37710.htm 1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较 ...

  2. Stitching模块中对特征提取的封装解析(以ORB特性为例)

    titching模块中对特征提取的封装解析(以ORB特性为例)     OpenCV中Stitching模块(图像拼接模块)的拼接过程可以用PipeLine来进行描述,是一个比较复杂的过程.在这个过程 ...

  3. 20145313张雪纯 《Java程序设计》第4周学习总结

    20145313张雪纯 <Java程序设计>第4周学习总结 教材学习内容总结 6.1何谓继承 程序代码重复时,可以把相同的程序代码提升为父类.继承除了可避免类之间重复的行为定义以外,还有i ...

  4. 20145328 《Java程序设计》第0周学习总结

    20145328 <Java程序设计>第0周学习总结 阅读心得 从总体上来说,这几篇文章都是围绕着软件工程专业的一些现象来进行描述的,但深入了解之后就可以发现,无论是软件工程专业还是我们现 ...

  5. 20145240《网络对抗》Web安全基础实践

    Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语 ...

  6. /usr/bin/ld: crti.o: No such file: No such file or directory

    Problem : You are running a 64-bit linux system and trying to compile a 32-bit application and you g ...

  7. 在Windows下安装运行Kafka

    一.安装JAVA JDK 1.下载安装包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...

  8. MR案例:内连接代码实现

    本文是对Hive中[内连接]的Java-API的实现,具体的HQL语句详见Hive查询Join package join.map; import java.io.IOException; import ...

  9. 4196: [Noi2015]软件包管理器

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 412  Solved: 251[Submit][Status][Discuss] Descriptio ...

  10. vCenter Server 6.7 集成 vRealize Orchestrator 7.5

    第一步,安装独立Orchestrator 7.5,并初始化   Orchestrator ova导入和初始化步骤省略...请参考官方文档... Orchestrator 初始化中的认证源需要和vCen ...