热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信oauth2授权登录实践

1、准备工作需要企业资质,但可以微信公众平台测试号申请一个帐号,如扫码关注一下,否则获取授权码时报错授权成功回调地址redirect_url配置,可配置baidu.com,有些域名会有问题还需要绑定微

1、准备工作

需要企业资质,但可以微信公众平台测试号申请一个帐号,如

扫码关注一下,否则获取授权码时报错

授权成功回调地址redirect_url配置,可配置baidu.com,有些域名会有问题

还需要绑定微信开发者账号

二、按照文档走oauth2授权码流程

1.获取授权码。scope为snsapi_base为静默模式及自动授权不会弹框,而snsapi_userinfo则必须显示点击确认授权按钮。redirecurl需要URLencode一下。

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2b0891384028ece7&redirect_uri=http%3a%2f%2fbaidu.com&response_type=code&scope=snsapi_userinfo&state=1232#wechat_redirect

注意:需要使用微信客户端打开或微信开发者工具访问该链接,地址栏访问授权链接获取授权码code。也可将授权链接做出二维码,这就是微信扫码登录咯,手机扫码后手机右上脚调出浏览器工具栏->'复制链接'即可查看到授权码。

2.使用postman获取token,返回access_token(是一种透明令牌,不是JWT,不含有用的用户信息等,但会返回一个appid),fresh_token

3.如果是scope为snsapi_userinfo,可以根据access_token.openid获取更多用户信息。前端可以访问该接口。

三、后端springcloud oauth2搭建微信oauth2 sso客户端

其实这样是行不通的,微信定义的oauth2字段与spring的不一样,只能手动实现了,可使用spring social

security:
oauth2:
client:
client-id: wx2b0891384028ece7
client-secret: 59f3a1765efcbb4c313e08e38d91cdaa
user-authorization-uri: https://open.weixin.qq.com/connect/oauth2/authorize
access-token-uri: https://api.weixin.qq.com/sns/oauth2/access_token
scope: snsapi_userinfo
resource:
user-info-uri: https://api.weixin.qq.com/sns/userinfo #授权成功验证是否真正成功,看认证服务器是否需要该配置
sso:
login-path: /login

参考流程图

后端主要逻辑

       有道云首次以微信1234567登录,已前没授权1234567登录过,则有道云的DB 用户表没有授权登录返回token后根据微信openid号查询不到相关用户,则以微信1234567 openid创建的新有道云用户.但这个用户可能是没有密码或只有默认密码,一般会提醒用户补全信息提高安 全性。如果用户已授权过或解除授权再次授权则查出用户消息存redis session等,key为access_token。

前端主要逻辑

      需要访问授权码授权流程的几个接口,授权链接获取code,用户信息可直接访问,获取access_token,刷新access_token需要前端请求后端,后端发起微信认证服务器的请求再返回前端。另外前端需要通过interceptor判断access_token过期时间,在濒临过期时进行刷新token

 

 

 


推荐阅读
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
    最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
  • zuul 路由不生效_Zuul网关到底有何牛逼之处?竟然这么多人在用~
    作者:kosamino来源:cnblogs.comjing99p11696192.html哈喽,各位新来的小伙伴们,大家好& ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
author-avatar
手浪用户2502884343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有