app支付宝验证登录
支付宝开发平台
上图是官方提供的支付宝授权登录流程,具体看一下:
在小程序端获取 auth_code,目的是获取用户授权码
把第一步获取的授权码 auth_code 传到咱们自己的后台,也就是说后台需要编写一个接口,方便小程序端的传入
var me = this;my.getAuthCode({scopes: 'auth_user', // 主动授权(弹框):auth_user,静默授权(不弹框):auth_basesuccess: (res) => {if (res.authCode) {// console.log(app.serverUrl + '/login/' + res.authCode);// 调用自己的服务端接口,让服务端进行后端的授权认证my.httpRequest({url: app.serverUrl + '/login/' + res.authCode,method: 'POST',header:{'content-type': 'application/json'},dataType: 'json',success: (res) => {// 授权成功并且服务器端登录成功console.log(res);me.setData({userInfo: res.data.data});}});}},});
后台拿到这个 auth_code 之后,需要调用支付宝的授权平台,从而获取用户的唯一 token 以及 支付宝的userid,都是唯一的,调用的接口为 [alipay.system.oauth.token]
获取到userid后,判断一下这个userid是否在我们自己的数据库中存在,如果存在,直接获取信息,并且直接返回用户对象到前台;如果不存在,则需要从支付宝授权平台再一次去获取支付宝用户的信息。
调用 [alipay.user.info.share],获取用户信息,这个用户对象里包含了大量的用户真实信息,
<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.15.12.ALL</version> </dependency>
@Autowiredprivate UserService userService;@ApiOperation(value = "统一登录接口", notes = "支付宝小程序唤起登录后调用", httpMethod = "POST")@PostMapping("/login/{authCode}")public IMoocJSONResult items(@ApiParam(name = "authCode", value = "授权码", required = true, example = "授权码") @PathVariable String authCode) throws Exception {// 1. 服务端获取access_token、user_idAlipaySystemOauthTokenResponse response = getAccessToken(authCode);if (response.isSuccess()) {System.out.println("获取access_token - 调用成功");/*** 获取到用户信息后保存到数据* 1. 如果数据库不存在对用的 alipayUserId, 则注册* 2. 如果存在,则获取数据库中的信息再返回*/String accessToken = response.getAccessToken();String alipayUserId = response.getUserId();System.out.println("accessToken:" + accessToken);System.out.println("alipayUserId:" + alipayUserId);// 2. 查询该用户是否存在Users userInfo = userService.queryUserIsExist(alipayUserId);if (userInfo != null) {// 如果用户存在,直接返回给前端,表示登录成功return IMoocJSONResult.ok(userInfo);} else {// 如果用户不存在,则通过支付宝api获取用户的信息后,再注册用户到自己平台数据库// 获取会员信息AlipayUserInfoShareResponse aliUserInfo = getAliUserInfo(accessToken);if (aliUserInfo != null) {Users newUser = new Users();newUser.setAlipayUserId(alipayUserId);newUser.setNickname(aliUserInfo.getNickName());newUser.setRegistTime(new Date());newUser.setIsCertified(aliUserInfo.getIsCertified().equals("T") ? 1 : 0);newUser.setFaceImage(aliUserInfo.getAvatar());userService.createUser(newUser);return IMoocJSONResult.ok(newUser);}}} else {System.out.println("获取access_token - 调用失败");}return IMoocJSONResult.ok();}// 服务端获取access_token、user_idprivate AlipaySystemOauthTokenResponse getAccessToken(String authCode) throws Exception {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APPID, // 1. 填入appidPRIVATE_KEY, // 2. 填入私钥 "json", "GBK", ALIPAY_PUBLIC_KEY, // 3. 填入公钥"RSA2");AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();request.setGrantType("authorization_code");request.setCode(authCode); // 4. 填入前端传入的授权码authCoderequest.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b"); // 0. 不用管AlipaySystemOauthTokenResponse response = alipayClient.execute(request);return response;}// 获取支付宝用户信息private AlipayUserInfoShareResponse getAliUserInfo (String accessToken) throws Exception {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APPID, // 1. 填入appidPRIVATE_KEY, // 2. 填入私钥 "json", "GBK", ALIPAY_PUBLIC_KEY, // 3. 填入公钥"RSA2");AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken);if(response.isSuccess()){System.out.println("获取会员信息 - 调用成功");return response;}return null;}
app支付宝验证登录相关推荐
- 解读APP新一代验证登录方式——一键登录/免密认证
近年来,验证领域迎来一个黑科技--用户在APP上进行账号注册或者号码绑定时,不需要接收短信验证码,直接可以以本机号码实现秒级验证.这种新颖且便捷的验证方式称为"一键认证". 一键认 ...
- Java支付宝APP支付-验证异步通知消息
上一章已经讲述了支付宝如何生成支付订单,这一章讲述一下支付宝生成订单之后,异步通知接口的开发. 这里先讲一下啥叫支付宝异步通知:对于App支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址 ...
- uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权
效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== [APP支付宝登录] https://opendocs.alipay.co ...
- Android Studio 开发app 实现支付宝授权登录,获取支付宝账号头像昵称等信息
效果展示: 点击支付宝授权Demo 接下来我们开始动手写项目 首先需要在支付宝开放平台,注册账号,创建应用,配置应用,需要审核时间大约为1-2天. 网页/移动应用文档指 ...
- 支付宝快捷登录相关事宜
接近年关,公司产品提出新需求,和支付宝合作,需要开发快捷登录-->"无线账户授权",手机端装有支付宝钱包,直接唤起支付宝钱包,若没有支付宝钱包就直接走HTML5页面操作,该操 ...
- App常见的登录注册分析
京东app注册页 1.手机号注册 国内App普通都会采用手机号注册的方式,一方面便于用户在手机端进行注册验证码相关的验证,另一方面企业也想收集用户的手机号码,便于后期的广告.活动相关的通知和发放 2. ...
- APP支付宝支付接入
1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...
- 注册登录的设计:基于33款APP的注册登录分析
对33款APP进行7个维度的对比分析后,为自己解决了有关注册登录设计的疑惑:并不是所有的应用都有设计注册登录的必要性:注册设计包括了路径设计.流程.内容设计--你在设计时是否也出现过类似的疑惑呢?不妨 ...
- 七丶青龙nvjdc部署教程+短信验证登录对接傻妞
青龙nvjdc部署教程+短信验证登录对接傻妞Nolanjdc 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装教程 傻妞机器人安装教程 XDD安装教程 QQ交流:10 ...
- app开发人脸登录和指纹登录_易讯云通讯推出“一键登录”,为App登录提供新方案...
移动互联网时代,用户的耐心越来越少,注意力也越来越弱,追求便捷与高效.登录的方式从自定义的账号密码登录,到邮箱登录,到第三方登录与手机验证码登录两种登录方式进行竞争,到现在的个人指纹,人脸识别等的识别 ...
最新文章
- 简单的Socket实现web功能
- 在线编辑器 上传控件
- 获取SQL Server数据库表的列名
- PHP常量PHP_SAPI与函数php_sapi_name()简介,PHP运行环境检测
- Apollo产品对比
- rsync算法原理及使用
- oracle导出中文utf8乱码,ORACLE导入导出后发生中文乱码的原因及解决办法
- 蓝桥杯 BASIC-27 基础练习 2n皇后问题
- 第二节:Web前端-ASP.NET之C#基础
- 数字阵列麦克风处理技术概述
- 面经_黑盒测试与白盒测试
- PS-怎么使用参考线?
- 如何用ps设计出一张吸引人眼球的创意节日海报?
- 太极定二仪,清浊始以形:红黑树的实现和性质
- 比较两组数据的差异用什么图更直观_用Excel制作旋风图
- 马云坦然不懂计算机,来自马云的绝望:三角函数让我彻底失去学数学的信心
- Android简易计算器的制作
- android计算bmi的程序,简单的基于android的BMI计算应用
- C语言 最佳情侣身高差
- Google首页电吉他源代码下载