一、普通方法获取

1.获取openid需要微信认证的服务号及以上权限才可以,如果是个人学习可以申请一个测试账号。

申请测试账号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

2.微信号关注测试账号。
3.修改回调页面域名(如果没有域名,可以使用花生壳等内网穿透工具)
4.进入消息接口使用指南,进入微信网页开发,进入微信网页授权
5.根据相应提示,拼接成一个完整的url,在微信端打开。
url示例:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=***&redirect_uri=http://186***4.iask.in/sell/weixin/auth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
6.controller测试是否能获取对应的信息
@Slf4j
@RestController
@RequestMapping("weixin")
public class WeixinController {@GetMapping("auth")public void auth(@RequestParam("code") String code) {log.info("进入验证");
        log.info("code={}", code);
        String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx111f1b7437e708dd&secret=e12860f0ce3d177f39e2160a0c8286c1&code=" + code + "&grant_type=authorization_code";
        RestTemplate restTemplate = new RestTemplate();
        String response=restTemplate.getForObject(url,String.class);
        log.info("response={}",response);

    }
7.微信端打开链接,测试通过!
2018-01-22 14:21:39,721 - 进入验证
2018-01-22 14:21:39,722 - code=0211m1EK15XJC60PZUHK1Lw0EK11m1EM
2018-01-22 14:21:39,864 - response={"access_token":"6_PI28kdwbshmOV7pjOEt-7d00n5RadMrK8mQPjPmnN5wIc-Tq_lC3uN80ciF8FeW95bUqHINZnyCWtvEXfwbgyV0_PxP7rLv71qw-2khXS88","expires_in":7200,"refresh_token":"6_mAl5UpV30kKlwsDt5ni68ZQrErwoHlFA57WTXtx554yURUyCY6mB9xDw88Fi-vyYt-yCBgc-Rkr-VamKlKQvjpp6yUxqApUC1Fzk69PiD3Y","openid":"oakir0f-2BQXKjR7ARMHt1iwTQdE","scope":"snsapi_userinfo"}
ps:如上所示,用户通过url访问微信,微信通过url上提供的相应的信息,重定向到我们指定的地址(含有code),在controller中可以获取code,同时controller根据这个code,和其他的信息,访问微信,可以获取到一系列信息,包括最重要的openid。

二、根据第三方工作包,便捷获取。

1.github地址:https://github.com/Wechat-Group/weixin-java-tools
2.MP_OAuth2网页授权文档:https://github.com/Wechat-Group/weixin-java-tools/wiki/MP_OAuth2%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83
3.maven依赖
<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>2.9.0</version>
</dependency>

4.根据文档,进行相应的操作即可,原理和一、相同

5.进行优化:(可以略过)
application配置
wechat:
  appId: wx***ddappSecret: e1286***86c1
@Component
@ConfigurationProperties(prefix = "wechat")
public class WeChatAccountConfig {
 //省略set get,(导入application配置)private String appId;

    private String appSecret;
}
@Component
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 wxMpInMemoryConfigStorage=new WxMpInMemoryConfigStorage();
        wxMpInMemoryConfigStorage.setAppId(accountConfig.getAppId());
        wxMpInMemoryConfigStorage.setSecret(accountConfig.getAppSecret());
        return  wxMpInMemoryConfigStorage;
    }
}
@Slf4j
@RequestMapping("wechat")
@Controller
public class WeChatController {@Autowired
    private WxMpService wxMpService;

    @GetMapping("authorize")public String authorize(){//1.配置
        //2.调用方法
        String url="http://186***3bi4.iask.in/sell/wechat/userInfo";
        String redirectUrl=wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_BASE,null);
        log.info("【微信网页授权】获取code,result={}",redirectUrl);
        return "redirect:"+redirectUrl;
    }@GetMapping("userInfo")public void userInfo(@RequestParam("code")String code){WxMpOAuth2AccessToken wxMpOAuth2AccessToken;
        try {wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
        }catch (WxErrorException e){log.error("【微信网页授权】{}",e);
            throw new SellException(ErrorEnum.WX_MP_ERROR.getCode(),e.getError().getErrorMsg());
        }String openid=wxMpOAuth2AccessToken.getOpenId();
        log.info("openid={}",openid);
    }
}

微信公众号 网页授权获取相关推荐

  1. php微信授权没有code返回,解决关于微信公众号网页授权获取code参数的问题

    解决关于微信公众号网页授权获取code参数的问题 发布时间:2018-07-24 23:21, 浏览次数:3327 , 标签: code * 在微信网页授权过程中,需要获取code参数,因为我用的是公 ...

  2. 微信公众号网页授权获取用户信息的流程

    官网文档 网页授权流程分为四步: 引导用户进入授权页面同意授权,获取code 通过 code 换取网页授权access_token(与基础支持中的access_token不同)(我的需求只需要到第二部 ...

  3. 微信公众号网页授权--前端获取code及用户信息(vue)

    前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的踩坑填坑之路. 一.测试号相关配置 首先在你公司申请的测试号上配置好相关信息 ...

  4. 微信公众号网页授权--前端获取code及用户信息(vue)【简单详细版】

    嗨喽大家好,前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的遇到的一些问题的见解,希望对你们有帮助. 一.测试号相关配置 首 ...

  5. 微信公众号网页授权,获取用户信息以及openid -- PHP后台

    微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...

  6. 微信公众号网页授权思路解析及具体代码

    微信公众号网页授权思路解析及具体代码 微信开发文档 实现方式也是两种: 1.静默授权登录 授权登录以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静 ...

  7. 微信公众号网页授权登录的超简单实现步骤

    微信开放平台为第三方移动程序提供分享.传播的接口, 使用户可将第三方程序的内容发布给好友或分享至朋友圈, 下面这篇文章主要给大家介绍了关于微信公众号网页授权登录的超简单实现方法, 需要的朋友可以参考下 ...

  8. 微信公众号网页授权40163问题【php】

    微信公众号网页授权40163问题 tp5为例,emmmm-一直报40163或40029问题,翻遍了各大网站都没找到合适我的办法. 如图: 解决之后如图: 因为重定向所以请求了两次code,所以一直报4 ...

  9. 微信公众号网页授权代码优化过程(一)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次更新 写本系列博客的主要原因是,我在处理一个微信公众号项目时要做一个网页授权的操作(官方地址是https://mp.we ...

  10. 微信公众号网页授权时序图

    微信公众号网页授权时序图 公众号网页授权时序图

最新文章

  1. RHEL 6上KVM的安装配置及使用-将物理接口桥接到桥接器
  2. 快速实现一个Http回调组件
  3. 【无标题】物联网安全挑战:为什么企业现在必须评估它们
  4. oracle 增加间隔分区,oracle分区表之间隔分区(oracle 11g) - 漫兮网
  5. linux/npm/git的简单操作
  6. golang nil切片与空切片
  7. [工具类]DataTable与泛型集合List互转
  8. 势逼 React Native,跨平台开发框架 Flutter 很凶猛 | 码书
  9. c语言程序求对称矩阵,C语言经典算法上三角下三角对称矩阵
  10. 数据库自定义聚合函数(求和、标准差、平均值、几何平均值、几何标准差、偏度系数、峰度系数)
  11. Excel2013使用插入特殊符号或复选框功能制作带对号的打钩方框
  12. 滴滴的2019:巨亏和裁员之后,群狼将至
  13. 实变函数(3)-可测函数
  14. 如何看待360与腾讯之争
  15. Oracle dba_users视图
  16. SpringBoot源码分析(二)之自动装配demo
  17. ChatGPT实现代码生成
  18. 【techQA】如何在Mac OS 11 Big Sur or M1芯片Mac下开启蓝牙Apt-X
  19. 按头安利,好看又实用的商务金融UI模板素材看这里
  20. Evernote新搭档Evertracker,掌控自己的时间(视频)

热门文章

  1. mysql 内联注释_TSRC挑战赛:WAF之SQL注入防御思路分享
  2. 百家讲坛-《老子智慧与现代爱情婚姻》
  3. 16.Linux环境搭建虚拟网络
  4. 移动端touch事件影响界面click/超链接事件无法点击
  5. 全球与中国混频器市场现状及未来发展趋势
  6. android studio设置安卓版本,android studio怎么设置android版本?
  7. 51单片机LCD1602液晶屏显示
  8. pyqt5 从本地选择图片 并显示在label上
  9. 时间同步服务器,保障您的计算机系统时钟精准
  10. Python tkinter(GUI编程)模块最完整讲解(上)