为避免繁琐的注册登陆,一般的大平台都会实现三方登陆的功能,增强用户的粘性。来让我 先看看功能的实现前需要的准备工作吧!

首先在实现功能前我们需要了解一下OAuth协议即三方登陆协议,OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。OAuth在"客户端"与"服务提供商"之间,设置了一个授权层,"客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层使用的是令牌(token),与用户的密码不同。用户可以在登录的时候,指定令牌的权限范围和有效期。

                                                  微信确认授权流程图

如微信官方所提供的流程示意图,我们只需按照步骤将其实现即可。

站在用户的角度,首先我们需要给用户提供一个按钮或a标签,点击触发第三方应用向微信发出的【第一个请求】:获取code    https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect  请求的模板在官方网站可以查询。我们需要替换的是:appid:填写自己的appid和redirect_uri:即重定向的地址,其他按官方默认填写或其他需求。请求成功之后,微信会返回一个二维码页面,即用户授权页面,用户扫码授权之后,微信端确认,拉起第三方应用或重定向到第三方并携带授权码code。

http:/******.html?code=asdfa*******asdfadf    微信端回调

从重定向的地址栏可以获取到code,前端发请求携带code到业务层,业务层通过code向微信发送【第二个请求】:通过code获取access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

将请求中的appid,secret(应用密钥),传入的code进行提换替换,请求成功后会返回结果:
             

类型为字符串类型,可以将其转为json对象类型(需要fastjson支持),从而可以获取access_token和openid等字段,数据库后台需要一个专门存储微信登录信息的表,openid为表字段标识信息。

获取到access_token和openid后即可以正式开始业务的相关操作,首先需要判断扫码用户是否为第一扫码登录,通过openid进行查询验证,若返回存在登录信息,即可直接免密登录,若不存在登录信息,即表示用户第一次扫码登录,需跳转到绑定页面,让用户进行绑定操作,绑定成功后再扫码登录。

微信绑定基本流程:后端返回openid和access_token到前端页面,跳转页面并将openid和access_token在地址栏拼接携带为参数,利用钩子函数获取参数openid和access_token,发送请求到后台参数为:openid和access_token以及用户提供绑定的信息(手机号等)。后台先进行参数校验,信息判断等基本操作,无误后使用openid和access_token向微信发送【第三个请求】:

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

即可返回基本的用户信息资料,将对应信息设置到数据中进行保存记录即可。

登录成功后,将用户基本信息设置到redis中并设置时效,设置key=token,value=用户登录信息,并将token及用户信息(敏感信息过滤)以Map的形式返回到页面端,利用localStorage进行保存,同时完善配置前置拦截器(每次请求都携带token),后台拦截器,前端拦截器(前端拦截与放行判断)及后端拦截器(后端拦截及放行判断)等基本配置即可。

java实现三方登陆:微信登陆功能的实现相关推荐

  1. Java实现扫码微信登陆(获取登陆成功的用户信息 + 包含使用vue怎么显示登陆二维码)

    实现于springboot中 依据b站视频写出的: 点击此处进行观看 然后记录于此处. 首先微信登陆的流程为: (可以去微信开发者平台看) 第一步:请求CODE 若提示"该链接无法访问&qu ...

  2. Unity ShareSDK接入QQ登陆微信登陆

    Unity 接入微信登陆QQ登陆 首先我们需要去下载ShareSDK http://www.mob.com/mobService/sharesdk 将下载下来的压缩包中的ShareSDK.unityp ...

  3. Java实现提现到微信的功能

    1.添加依赖 <dependency><groupId>com.github.wxpay</groupId><artifactId>WXPay-SDK- ...

  4. CocosCreator系列——接入原生微信登陆功能

    CocosCreator系列--接入原生微信登陆功能 先看一下微信官方的接入文档吧,不得不说,我真的怀疑微信的文档肯定不是技术写的,简直乱得一批,看的人头昏脑胀,主要看一下这个链接的接入流程就行了,不 ...

  5. openid java_微信小程序调用微信登陆获取openid及java做为服务端示例

    一.微信小程序 第一步:调用 wx.login获取code 文档地址 第二步:判断用户是否授权读取用户信息 文档地址 第三步:调用wx.getUserInfo读取用户数据 文档地址 第四步:由于小程序 ...

  6. 微信登陆的LOL只有一个服务器,《LOL》部分大区开启微信登陆功能 扫码即可进入游戏...

    <LOL>部分大区开启微信登陆功能 扫码即可进入游戏 2019-05-06 16:33:28来源:游戏下载编辑:柠檬评论(0) <英雄联盟>官方今日发公告表示,部分大区已开放微 ...

  7. 微信登陆的LOL只有一个服务器,英雄联盟开启微信登陆功能 网友吐槽:这波操作多此一举...

    近日英雄联盟官方发布了一条公告引发网友议论声不断,原来英雄联盟官方将于8月21日8.16版本发布以后,在部分大区开启微信登陆功能测试,相信在科技越来越发达的今天,我们很多人在出门时只需要带上一部手机就 ...

  8. activitythread.java,调用微信登陆授权时,出现Uninitialized ActivityThread问题?

    查看论坛已经有很多人提出这个问题了,但却没有一个官方正统回复.都是让人上传日志. 说说我遇到的问题吧,在Unity制作的游戏中接入微信登陆.之前正常,最近因为接入其他SDK,引入了android.su ...

  9. 2021年PC电脑网站接入微信登陆支付精讲--1小时自已就可动手接入功能,--所有流程一目了然

    2021年了,你还要疲于拼命吗,2001年初,遇到BUG就是躲,放下,去吃最好吃的,吃好喝好,睡一觉,再来解决, 现在是喜欢上BUG了,出现BUG,就发自内心的想搞清楚,是什么源因导致的,呵呵呵 PC ...

  10. java微信demo_微信登陆 , 简单的demo , java

    这几天简单的做了一下微信登陆的demo,希望对大家有帮助 不多说,直接上代码: /** * * @author TY * */ @Controller @RequestMapping("/w ...

最新文章

  1. linux 查看显卡信息
  2. Spring Developer Tools 源码分析:二、类路径监控
  3. asp.net core 腾讯验证码的接入
  4. 京东购物在微信等场景下的算法应用实践
  5. 电商系统中API接口防止参数篡改和重放攻击(小程序/APP)
  6. jetbrains IDEA/pycharm修改代码提示框配色
  7. win8系统装c语言编程软件哪个好,win8系统安装c语言方法
  8. mybatis association 问题
  9. JQuery序列化表单serialize() 以及 serializeArray()
  10. java me教程_Java ME基础教程
  11. iOS系统自带的视频播放器
  12. mysql索引优化面试题_mysql索引优化面试题
  13. IText与pdfObject.js在线展示后台生成pdf文件流
  14. linux SysV IPC实现
  15. 学习《医学三字经白话解》之隔食反胃(吞咽梗阻)
  16. Matlab实现snn代码,SNN系列|神经元模型篇(3)SRM
  17. 小程序码之拉新推广需求实现
  18. 403forbiden解决
  19. 长生不老:从秦始皇到基因编辑
  20. Linux命令之curl命令

热门文章

  1. 基于AD9854个和MSP430的波形发生器
  2. Default changeset implementation allows only one operation
  3. 人生的镜像-菌群人生,从出生到死亡的菌群演替
  4. 华为数字化转型之道第四讲
  5. 申请一个微信小程序有哪些需要注意的事项
  6. 免费天气API接口,全国天气免费接口,2018年3月测试稳定OK
  7. mysql error1205 博客_mysql主从复制Error1205
  8. 一篇2006年的文章和一部2015年的名著
  9. el-menu菜单 -- unique-opened 子菜单唯一性失效
  10. 学习率设置-warm up与consine learning rate