最近研究了下支付宝的扫码登录,跟微信扫码登录差别还是很大,感觉很不好集成。

没有可用的api直接生成扫码登录的二维码,要使用支付宝的扫码登录只能是扫支付宝指定页面的二维码,才能支持跳转。

需求分析:

完成一个大数据展示平台,用户直接使用支付宝扫一扫登录,获取支付宝userid后关联出人员权限,跳转到数据展示页面,并根据用户权限进行过滤。

方案讨论:

第一个问题在于二维码的生成,如果直接使用支付宝的二维码页面。

页面链接:

https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=2018120562496666&scope=auth_user&
redirect_uri=https%3A%2F%2Fwww.baidu.com 

具体参数可以参照(网站支付宝登录)。需要注意redirect_uri后面的跳转地址和app_id指定的回调地址要是同一个。

但是这个链接输到页面中,显示的就是支付宝的登录页

这样会很难接受。在扫码后会跳转到指定的redirecturl,并携带相应的appid,auth_code等参数。需要注意这里的跳转,是浏览器的跳转,不是扫码后的手机支付宝的跳转,扫码后手机支付宝会提示是否确认登录,然后关闭页面。这正是我们想要的跳转效果。唯一不足就是给用户展示的是支付宝的登录页的二维码。

第二种方式,就是自己生成二维码,这样二维码展示成什么样式都可以自定义。

我们将

https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=2018120562496666&scope=auth_user&redirect_uri=https%3A%2F%2Fwww.baidu.com

这个字符串生成二维码,在网页里面自己生成二维码,不是直接放在浏览器中,直接放在浏览器中就和上面是一样的了,跳到了支付宝登录页。

现在再用手机支付宝扫一扫,但是扫码后,PC浏览器上的页面不会跳转了,因为不是支付宝的页面了,控制不了了。但是手机端扫码后,会跳转到redirect_uri地址,这个地址使我们可以自定义的一个手机H5页面地址。

但是现在的效果就达不到我们之前的要求了,没有办法控制PC浏览器跳转了。这就是我们的第二个问题。

在扫码授权后,控制PC浏览器的跳转。

主要有2中方式,一种就是轮询,一种是netty 这样的全双工方案

轮询就是在页面上生成二维码的时候,每隔一秒不断向后台请求,请求手机端是否有扫码登录,因为这个时候手机端扫码会跳转到我们指定的url,可以和后台进行交互入库。然后通知到前端。

采用netty,在页面上生成二维码的时候,就和后端进行socket连接。在手机端扫码登录后,将信息推送到前端,前端收到后进行跳转。

还有一个问题,就是auth_code取支付宝userid的时候,需要区分是应用授权,还是人员授权。两者是不一样的。用户信息授权,三方应用授权

整个流程图:

网页集成支付宝扫码登录相关推荐

  1. 关于网页版微信扫码登录以及获取用户信息

    由于我只研究了1天时间,可能有些地方认知错误 1:网页版微信扫码登录的流程 ① 点击扫码登录按钮 ② qrAuthorize(访问微信接口,如果微信接口判断有权限生成二维码的话,跳转到二维码页面.) ...

  2. 简述网页版微信扫码登录的过程

    我的小站 网页版微信扫码登录流程 1. 请求页面 先打开https://wx.qq.com/显示出页面,这时候会加载一堆的html,js等资源. 2. 获取会话UUID 微信Web版本不使用用户名和密 ...

  3. Unity发布PC平台,接入微信开放平台网页应用,扫码登录不拉起浏览器直接显示二维码在UI上

    文章目录 一.前言 二.登录微信开放平台,申请网页应用 三.抓取授权二维码原理 四.测试 五.核心代码 六.补充:如何知道用户扫码成功 一.前言 Unity发布PC平台,如果在PC平台想要使用微信登录 ...

  4. 网页使用微信扫码登录

    第一步 在微信开发平台登录进去之后再管理中心-->创建网站应用.填上网站应用的基本信息之后提交审核.审核通过后会有AppID和secret.做好保存. 注:这里的回调域名很重要,请填XXX.XX ...

  5. php支付宝扫码登录接口,支付宝支付接口 - musam的个人空间 - OSCHINA - 中文开源技术交流社区...

    接入阿里支付宝其实不是很难,阿里提供了很全面的SDK供我们使用,我们只需调用API接口就可以完成支付功能,但是具体的业务还是需要我们自己编写,根据提供的文档记录一下简单的使用方式. 1.登录蚂蚁金服开 ...

  6. pc端网页实现微信扫码登录

    微信开发文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html 点击按 ...

  7. python模拟支付宝扫码登录_GitHub - Jaccorot/alipay_python: 支付宝 alipay python接口,支持担保交易,即时到帐和自动发货接口...

    介绍 alipay_python 是支付宝接口的python版本,提供了担保交易,即时到帐和自动发货的接口. fork自这个版本 alipay. 增加了担保交易,确认发货和简单的测试站点(django ...

  8. android跳转到支付宝扫码,【笔记】通过adb shell启动支付宝扫码登录

    支付宝包名 :com.eg.android.AlipayGphone 启动支付宝 adb shell am start com.eg.android.AlipayGphone/.AlipayLogin ...

  9. [微信] 微信网页版扫码登录的实现

    我们先来回顾一下微信网页版的扫码登录过程 1. 打开微信网页版,https://wx.qq.com/ 2. 打开手机微信客户端,扫一扫 3. 点击确定,登录 看似简单的操作流程,中间涉及的数据交互有很 ...

最新文章

  1. 【设计模式】 模式PK:策略模式VS状态模式
  2. golang post get 请求 简介
  3. 【深度学习】基于Pytorch的softmax回归问题辨析和应用(二)
  4. 2010年3月4日参加由张应杭老师主讲的关于传统文化的培训-一个有益的PPT分享给大家...
  5. 项目开发中关于jquery中出现问题小结(textarea,disabled,关键字等)
  6. Python PhantomJS 爬虫 示例
  7. Spring MVC 常用Jar包官方下载地址(官方Maven仓库)
  8. 江湖召集:.NET开发者们看过来,这场长沙的开发者技术大会正是为你精心准备的大餐...
  9. ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库
  10. 依时利考勤机说明书_考勤机(依时利)产品手册
  11. Spark精华问答 | Spark的计算方法是什么?
  12. 【项目经验】如何用TexturePacker Physicseditor开发游戏
  13. Python3 写JSON数据到文件(多行格式化版)
  14. RedHat6.7安装教程,图解,超详细
  15. [MapReduce_8] MapReduce 中的自定义分区实现
  16. 某热门单击手游lua解密.md
  17. Junit单元测试——如何正确测试异常
  18. php验证qq,php QQ第三方登录/OAuth2.0验证
  19. a modern epidemic
  20. SuperMap iClient3D for WebGL教程 水面特效制作

热门文章

  1. Web测试要点(功能、性能、可用性、兼容、安全)
  2. XILINX FPGA+RK3399 PCIE X4
  3. mc9s08dz60添加BootLoader实现CANboot下载更新功能
  4. 【新闻早报简报】早上微信里发的那些新闻早报哪里来的
  5. FACIAL: Synthesizing Dynamic Talking Face with Implicit Attribute Learning 论文解读
  6. IDEA控制台输出彩色字体和彩色背景
  7. Unity3D游戏开发最佳实践技巧
  8. VMware安装Redhat虚拟机步骤
  9. C#程序探测未知网络环境的神操作
  10. android加密设备,用于Android手机的加密设备和加密外部SD卡