今年大四毕业,由于新冠肺炎疫情的原因,开学和毕业答辩的时间都进行了推迟,因此有较多的时间对毕设项目做修改和调整,便在项目中接入微信和支付宝的第三方登录。在此需要说明,微信和支付宝的开发者平台大体一致,但是接入功能审核条件不尽相同。对于微信开发者而言,申请第三方登录不但要求你要有自己的域名,还要填写《微信开放平台网站信息登记表》并盖章等,条件相对苛刻。对于支付宝开发者而言,申请第三方登录仅需要有个人服务器即可。对于“一穷二白”开发者,什么都没有的话问题也不大,通过修改HOST和配置Nginx等,也可以借别人的账号,达到移花接木的效果。

先讲一下大致的接入流程,然后再讲具体的操作。

  1. 先注册支付宝开发者平台用户,然后创建申请“网页&移动应用”。
  2. 在注册成功后,你可以拿到 app_id,redirect_uri,private_key,public_key 等。
  3. 编写支付宝回调地址功能。

该博客针对接入支付宝第三方登录功能的实现需要你具有SpringMVC的基础,如果你的是web.xml之类的老项目可以参考其他博客。本人就是因为在百度的时候发现都是老项目的接入,所以在此讨论一下新项目的接入方法。同时也要求你有一个云服务器,如果没有,可以私信我,讨论一下“移花接木大法”心得。以下链接是支付宝的官方接入教程,流程图如下:

支付宝官方接入教程说明:https://opendocs.alipay.com/open/263/105809

一,注册支付宝开发者平台用户

1. 通过如下链接,支付宝扫码登录后填写相关个人信息,然后即可注册成功,再次点击如下链接即可跳转到开发者中心控制台。

https://openhome.alipay.com/platform/developerIndex.htm

2. 点击创建应用 ---> 创建网页&移动应用 ---> 选择自定义接入类型 。然后填写应用的相关信息即可。需要注意应用头像必须是类似与商务logo的,我尝试过很多次审核均不通过,最终网站找了个类似商务logo才行。其次是 “网址url” 这里填写你项目连接,比如我的服务器IP:123.456.789.012,项目端口:8080,项目登录页是 /project/login。即我填写的 网址url 是:http://123.456.789.012:8080/project/zfbLogin。这个网址URL是当用户点击确定登录的时候,支付宝的回调地址。

3. 设置接口加签方式,根据提示下载“支付宝密钥生成器”生成公钥字符。点击确定跳出来的东西中,保存支付宝公钥,后续也能看到。

二、设置访问链接

用户点击支付宝登录的时候实际上一个a标签跳转链接,HTML代码如下,注意,http://123.456.789.012:8080/project/zfbLogin,回调地址的“/”和“:”需要用转义字符代替。

<a href="https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=12345678998745&scope=auth_user&redirect_uri=http%3a%2f%2f123.456.789.012%3a8686%2fproject%2fzfbLogin">支付宝登录</a>

三、完成回调接口功能

在开发之前,需要确定你有如下参数

1. 支付宝三方登录网关(ZFB_SERVER_URL),页面可以看到,大家都是一样的为 https://openapi.alipay.com/gateway.do

2. 支付宝APP_ID(ZFB_APP_ID),即APP_ID。

3. 应用授权私钥(应用授权私钥),即 支付宝密钥生成器 生成的应用私钥

4. 支付宝登录公钥(ZFB_PUBLIC_KEY),即 上面第一节第3点中,点击确定跳出来的支付宝公钥

接口相关代码如下:

@RequestMapping("zfbLogin")
public String zfbLogin(){// 获取AuthCode 等,具体可以获取哪些数据参考支付宝官方接口文档,这里只需要使用auth_codeString authCode = request.getParameter("auth_code");log.info("authCode ==> "+authCode);if(StringUtils.isNotEmpty(authCode)){try{// 这些参数均被抽取出来,参数说明见博客AlipayClient alipayClient = new DefaultAlipayClient(ZFB_SERVER_URL, ZFB_APP_ID, ZFB_PRIVATE_KEY, "json", "UTF-8", ZFB_PUBLIC_KEY, "RSA2");// 通过authCode获取accessTokenAlipaySystemOauthTokenRequest oauthTokenRequest = new AlipaySystemOauthTokenRequest();oauthTokenRequest.setCode(authCode);oauthTokenRequest.setGrantType("authorization_code");AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(oauthTokenRequest);String accessToken = oauthTokenResponse.getAccessToken();log.info("accessToken ==> "+accessToken);if(StringUtils.isNotEmpty(accessToken)){// 根据accessToken获取用户信息AlipayUserInfoShareResponse userInfoResponse = alipayClient.execute(new AlipayUserInfoShareRequest(), accessToken);if (userInfoResponse.isSuccess()){log.info("zfbUser ==> "+JSONObject.toJSONString(userInfoResponse));// userInfoResponse 中有哪些用户信息参考支付宝官方接口文档,这里演示如下几个Map userInfo = new HashMap(6);userInfo.put("nickname", userInfoResponse.getNickName());userInfo.put("imgUrl", userInfoResponse.getAvatar());userInfo.put("uuid", userInfoResponse.getUserId());// 接下来你可以通过免密登录或者获取密码自动登录等方式,做登录操作获取进入首页即可return "index";}else{log.warn("无法获取用户信息");}}else{log.error("接入支付宝登录认证出现错误,无法获取到accessToken.");}}catch (Exception e){log.error("获取支付宝用户信息失败");e.printStackTrace();}}else{log.error("接入支付宝登录回调方法错误,无法获取到Token.");}return "login";
}

至此,功能基本完成。当你扫码点击确定之后,支付宝会触发回调接口做登录操作,你需要将项目部署到服务器上。

SpringBoot项目接入支付宝第三方登录相关推荐

  1. 支付宝交易查询接口分析及实现----springboot项目接入支付宝(四)

    一.API说明 springboot项目接入支付宝(一) springboot项目接入支付宝(二) springboot项目接入支付宝(三) API地址 二.service /*** @Descrip ...

  2. 配置沙箱应用环境----springboot项目接入支付宝(一)

    1.入口 登录支付宝的开放平台 2.生成密钥 3.加签管理 然后将前面的应用公钥粘贴进去后确认. 4.后续 springboot项目接入支付宝(二) springboot项目接入支付宝(三) 注:能力 ...

  3. SpringBoot项目中集成第三方登录功能

    SpringBoot项目中集成第三方登录功能 引言 1 环境准备 2 代码实现 3 第三方平台认证申请 4 打包和部署项目 5 第三方平台登录认证测试 6 参考文章 引言 最近想把自己在公众号上介绍过 ...

  4. 第三方接入支付宝授权登录(支付宝新建应用没有公钥和私钥)问题

    由于最近有个需求,需要做第三方的接入支付宝授权登录功能,特此记录下.          百度上很多的接入代码,在此的代码其实和他们差不多,差别在于支付宝官方吧原来的秘钥方式换了,有些同学可能找不到或者 ...

  5. web项目接入支付宝开发(超详细)

    web项目接入支付宝开发"超详细" 前言 接入开发前准备 代码开发 项目测试 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 最近公司项目涉及到支付宝支付的接入,说简单 ...

  6. web接入QQ第三方登录

    原文地址:https://blog.csdn.net/cwfjimogudan/article/details/54135957 这是第三方登录的第二篇,关于web接入微博第三方登录可以参考我之前的博 ...

  7. 最详细Java实现支付宝第三方登录

    文章目录 概要 流程 代码 小结 概要 分享最新Java实现支付宝登录.(注:支付宝登入用个人账号登录(不非得用企业账号)即可测试,如果用沙箱环境进行测试可能会有Bug,建议用个人用户进行测试❤)如果 ...

  8. 从零学ELK系列(十一):SpringBoot项目接入ELK超级版(超详细图文教程)

    前言 之前在<从零学ELK系列(十):SpringBoot项目接入ELK升级版(超详细图文教程)>中演示了SpringBoot项目接入ELK请求记录及优化,本次针对于未知异常通过拦截进行记 ...

  9. springboot项目接入天猫精灵

    springboot项目接入天猫精灵 最近工作需要使用到天猫精灵的语音功能,大体是通过呼叫对应的"调用词"实现携带参数,然后调用我项目中的接口,以实现对应的业务.所以在此简单的记录 ...

最新文章

  1. android 多个绑定事件,Android RxJava 实际应用讲解:联合判断多个事件
  2. TCP UDP 协议深度解析 (未完待续)
  3. php 模板制作教程,Destoon模板制作简明教程_PHP教程
  4. html 形成打印数据,用HTMLTestRunner生成报告,无法打印print的内容
  5. 2018/03/25
  6. 1-3.监督学习(supervised learning)
  7. oracle 日志丢失,Oracle联机日志文件丢失解决方法一例
  8. 关于jffs2文件系统如何掉电保护
  9. java数组的四个要素_Java零基础系列教程04Java数组
  10. 4.Vue跨域session问题解决
  11. numpy 中的nan和常用的统计方法
  12. 前端跨域 ——实践总结,亲测有效
  13. 潘多拉固件设置ipv6_Phicomm-k2+pandorabox固件+PPPOE拨号+IPV6
  14. 微型计算机相关的英文文献,微型计算机控制系统(单片机控制系统)外文文献翻译.doc...
  15. Qt下汉字转拼音,包含二级汉字
  16. 不要问我1是不是质数
  17. python哥德巴赫猜想
  18. OpenCV黑魔法之隐身衣 | 附源码
  19. apple watch3连android,无需艳羡苹果党的Apple Watch 3 这款安卓通话神器亮了
  20. redis系列之数据库与缓存数据一致性解决方案(简单易懂)

热门文章

  1. Cocos2d-x 3.2 学习笔记(十五)保卫萝卜 场景与数据
  2. Jmeter学习笔记之响应断言
  3. java 网页保存为pdf文件怎么打开方式_js相关:JavaScript+Java实现HTML页面转为PDF文件保存的方法...
  4. bug生命周期bug跟踪处理
  5. JSP与HTML的区别
  6. 雀享宝 v1.1.10
  7. [爱分享]Linux命令——cd
  8. 你所知道的流量计工作原理在这里!
  9. 中国家用洗碗机行业竞争现状与营销策略分析报告2022-2028年版
  10. Python 项目布局