微信登录网页授权流程

1、流程

以下流程为微信官方提供的请求流程,现实中可使用第三方sdk:
https://github.com/Wechat-Group/WxJava/wiki/MP_OAuth2网页授权

  1. 首先微信客户端请求应用某地址

  2. 应用服务器拼接授权地址,并重定向用户请求到该授权地址。

    授权地址包含:

    • appid:公众号ID
    • ``redirect_url`: 服务器希望用户最终登陆上来的页面地址
    • Scope: 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
  3. 微信官方将用户的请求重定向到``redirect_url`,并携带code字段。

  4. 服务器根据code字段再拼接请求地址,去向微信官方获取accesstoken和openid。

注意:一共有两次地址的拼接。

2、springboot整合第三方sdk

整体流程

  1. 访问"/authorize"(带上目标网址tartgetUrl);
  2. 21行基于20行的url建立请求重定向路径,生成21行入参code, state;
  3. 请求由"/authorize"重定向到了"/userInfo";
  4. "/userInfo"使用入参code获取openid,并使用state重定向到tartgetUrl。
/*** @description:* @Author: JachinDo* @Date: 2019/07/25 17:04*/
@Controller
@RequestMapping("/wechat")
@Slf4j
public class WechatController {@Autowiredprivate WxMpService wxMpService;@GetMapping("/authorize")public String authorize(@RequestParam("returnUrl") String returnUrl) {// 1. 配置(在配置类中配置了WxMpService)// 2. 调用方法String url = "http://jachin2013.natapp1.cc/sell/wechat/userInfo";String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, URLEncoder.encode(returnUrl));
//        log.info("【微信网页授权】获取code, result={}",redirectUrl);return "redirect:" + redirectUrl;}@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.WX_MP_ERROR.getCode(), e.getError().getErrorMsg());}String openId = wxMpOAuth2AccessToken.getOpenId();return "redirect:" + returnUrl + "?openid=" + openId;}
}

微信登录,网页授权流程相关推荐

  1. php微信登录app接口开发文档,PHP微信OAuth2网页授权登陆接口

    微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...

  2. 微信OAuth2网页授权登陆接口

    微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...

  3. 微信开发网页授权获取用户信息

    如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 1. 关于OAuth2.0的说明 官方网站:http://oauth.net/   htt ...

  4. 微信开发——网页授权

    微信开发--网页授权 前期准备 前端 后端 前期准备 ①微信客户端中访问第三方页面,公众号可以通过网页登陆授权,获取微信用户的基本信息(头像.昵称等),实现业务逻辑.一切按照官方文档说明开发. ②安装 ...

  5. 【微信】网页授权,获取CODE,OPENID,

    修改微信授权回调域名 1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名.请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http:// ...

  6. uniapp 微信登录取消授权,以及不等待你做出授权选择就执行方法体

    uniapp 微信登录取消授权,以及不等待你做出授权选择就执行方法体 问题描述 关于小程序调用微信登录,调起权限询问得时候,点击取消,还会继续登录得问题,单纯从 uni.login得回调来看,不管是成 ...

  7. 微信登录失败——授权回调域名校验出错,错误码:10003原因及解决办法

    配置文件这个路径是对应的微信端页面和JS相关的域名:不是后台的域名,对于前后端完全分离有不同域名的,要分清了: 微信授权回调页面域名和JAVA后台配置文件中的域名不一致,会导致微信登录失败--授权回调 ...

  8. 第三方微信登录 | 静默授权与网页授权的实现

    一:介绍 第三方登录有QQ.微信.微博.支付宝等等,如果现在自己的项目中实现这些登录,即可以使用友盟的sdk,也可以一个一个接入,各有各的有点,这里不做赘述. 今天和大家分享的是,在项目中实现微信登录 ...

  9. php 微信开发 网页授权登录,微信开发网页授权登录——2018年6月2日

    微信网页授权登录用户同意授权,获取code 通过code,获取网页的access_token 拉取用户信息(scope 为snsapi_userinfo) application\index\cont ...

最新文章

  1. 在从1到n的正数中1出现的次数
  2. Android--生命周期【转】
  3. tic tac toe php,Python tic-tac-toe检测作弊
  4. 信息学奥赛一本通(2033:【例4.19】阶乘之和)
  5. PaddleOCR服务器端部署C++ cpu或者gpu进行预测
  6. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
  7. 通过Intent传递类对象
  8. 阿里代码规范插件安装和使用技巧
  9. 安装thrift遇到Error: libcrypto required
  10. 凤凰系统基于android x x86,凤凰系统X86|Phoenix OS X86 V3.0.8.529官方版
  11. input onchange事件不触发 oninput onpropertychange onchange 实时监听
  12. 重装系统后dell戴尔笔记本电脑插入耳机没有声音
  13. 陈式新架一路八十三式口诀
  14. 计算机it是什么,IT是什么意思
  15. P1972 [SDOI2009]HH的项链 区间查询
  16. 自定义鼠标指针图案每次开机或者重启都会重置的解决办法
  17. 我热爱生命本来的样子
  18. Android stdio报错:“xxx keeps stopping“解决方案
  19. Lodop打印较大的超出纸张的图片
  20. 安卓系统监控任务管理器App推荐

热门文章

  1. linux 脚本中 -le,Linux中编写Shell脚本
  2. 数字营销分析工具:美国今天,中国明天
  3. 开源一个古诗词项目(收录了58万古诗词和3.8万古诗词作者)
  4. Vue移动端UI组件库
  5. 前端开发:Vue,kotlinui库
  6. rabbitmq将默认root用户切换为其他用户
  7. pb数据窗口一些技取
  8. 勒索病毒WannaCry怎么解决?
  9. Python_代码风格_合理分解代码,提高代码可读性
  10. 【传奇脚本】队友拾取装备触发