title: 如何接入易班第三方登录 date: 2018-04-04 17:40:25 tags: 第三方登录

工作室接手易班,免不了的要在他的平台上做些事情,第一次去实现第三方登录应用 记录下(实际为了填博客)

首先一句话总结方法吧:看文档......... 感觉每个第三方调用使用都是差不多的

这是官方给出的易班授权的流程图 看来我之后我们应该能很明白我们要做两件事情:

  1. 获取授权令牌
  2. 通过授权令牌获取授权凭证

当得到授权凭证,我们就能通过授权凭证改进 我们原本鉴权以适应第三方登录 官方原理就不重复了,只是展示一下实践过程的代码

获取授权令牌

Getcode_baseurl = 'https://oauth.yiban.cn/code/html?client_id='# 重定向登录页面
@oauth.route('/login', methods=['GET'])
def redirect_codeurl():getcode_url = Getcode_baseurl + current_app.config['APPID']+'&redirect_uri=' + \current_app.config['REDIRECT_URI'] + \'&state='+current_app.config['STATE']return redirect(getcode_url)
复制代码

首先我们获取第一步需要的授权令牌 由易班文档我们可以设置用户点击易班登录的时候 把用户重定向到授权页面,即用户访问/api/yiban/login用flask中redirect 重定向到getcode_url 用户同意授权后,会被重定向到我们管理后台设置的callback地址 并携带授权令牌code,即:

127.0.0.1 - - [04/Apr/2018 17:56:34] "GET /api/yiban/callback?code=846b11408419865fea4365f473b103eef4410cda&state=asdnajisdnajfbnjsk HTTP/1.1" 200 -
复制代码

获取授权凭证

@oauth.route('/callback', methods=['GET'])
def redirect_tokenurl():code = request.args.get('code')gettoken_url = Gettoken_baseurl + code + '&client_id=' + \current_app.config['APPID'] + '&client_secret=' + current_app.config['APPSECRET'] + \'&redirect_uri='+current_app.config['REDIRECT_URI']try:result_json = requests.get(gettoken_url).json()except expression as identifier:return jsonify({'code': 500, 'msg': "服务端发生错误"})if 'code' in result_json.keys():return jsonify(result_json)else:payload = {'client_id': current_app.config['APPID'],'access_token': result_json['access_token']}check_token = requests.post('https://openapi.yiban.cn/oauth/token_info', payload).json()if check_token['status'] == 404:return jsonify({'code': 404, 'msg': "令牌已过期"})check_admin = Admin.query.filter_by(id=result_json['userid']).first()if check_admin:check_admin.access_token = result_json['access_token']db.session.add(check_admin)token = check_admin.generate_auth_token()else:admin = Admin(id=result_json['userid'],access_token=result_json['access_token'],expires=result_json['expires'])db.session.add(admin)token = admin.generate_auth_token()db.session.commit()return jsonify({'code': 200, 'msg': "登录成功", 'token': token.decode('ascii')})
复制代码

接下里我们要做的也很明显,就是通过上一步得到的授权令牌来进一步获取授权凭证 首先用户同意授权会被重定向到/api/yiban/callback 我们通过获取url中的code进一步request获取凭证的链接就可以完成 然后我们怎么和原本的用户鉴权结合呢??

首先每个项目你所用的鉴权方式可能不一样 这里我使用了第三方库flask_httpauth

这个方式的鉴权是获取填写的用户名和密码或者是你POST 过来的token,然后通过验证用户名和密码或者解密token来实现鉴权 也就是如果我们使用第三方登录,只需要保存或者更新token到对应的第三方用户表段就行了 再进行其他路由访问的时候携带token就行了 (当然你要拓展用户表表段以适应第三方登陆的保存)

转载于:https://juejin.im/post/5b2c850a51882574af281408

如何接入易班第三方登录相关推荐

  1. 易班APP登录密码加密、sig逆向分析

    1.最近闲来无事,听说有一个易班app登录好练手,就去试了一下看看. 先抓个包看看 然后使用了腾讯的壳,脱一下,我这边用的是BlackDex64. 脱完壳之后导出来直接导出来拖到jadx,就是现在这个 ...

  2. sdk没有登录什么意思_不需要接入SDK的第三方登录及分享

    讲到第三方登录分享,第一反应大概就是友盟.ShareSDK之类.集成微信.QQ.微博三个平台的话,友盟的SDK有62.9M,ShareSDK的包有74M.如果直接集成最原始的三个平台的SDK,大小总共 ...

  3. 只要五分钟,让你成功接入Twitter的第三方登录

    第一步: 依赖Twitter的依赖库 首先在整个项目的build.gradle中的 repositories 里添加maven如下: repositories {mavenCentral()maven ...

  4. JAVA接入支付宝授权第三方登录

    支付宝沙箱授权 开发前准备 支付宝沙箱环境申请使用 获取用户授权 生成唤起支付宝授权连接 回调地址接收支付宝参数 构建请求支付宝客户端 业务流程代码 串业务 开发前准备 支付宝开发平台. 支付宝接口A ...

  5. 如何使用java调用易班登录API获取个人账号信息(一)

    关于这篇文章: 笔者近期和小伙伴接了校方的一个小小小项目,要求使用易班APP的账号,这意味着需要调用易班官方的登录API.下面介绍使用java语言作为后端,在自己的网站如何接入易班的登录API(轻应用 ...

  6. 易班自动打卡+钉钉机器人消息提醒

    (一)声明 本文仅供学习交流使用,如有发热.感冒.咳嗽请及时根据当地疫情防控办法及时上报 (二)需求 首先,我双手支持和配合学校相关疫情防控政策. 其次,每天重复劳动让我们软件专业情何以堪.说干就干, ...

  7. 易班php,易班轻应用开发:PHP版

    最近易班的APP接入了我们学校,虽然很多地区评价为毒瘤,流氓等等,应用市场评价也是最低级别.但是,作为开发者,就不管它了,本文写的是一个查询成绩的轻应用(传送门:青果教务查成绩),这里就只说说,如何接 ...

  8. mysql用户登录和第三方登录_mysql 用户表结构设计,第三方登录

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

  9. 第三方登录mysql表_浅谈数据库用户表结构设计,第三方登录

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

  10. 数据库表设计-第三方登录用户表结构设计

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

最新文章

  1. 技术人员突围就业寒冬的最优途径 | 拿不到AI核心岗位Offer全额退款
  2. 存储控制器wwn号_正文-新华三集团-H3C
  3. Linux之父警告全球程序员:我刚发布的5.12内核有bug,你们千万别用
  4. redis有值查询返回null_Redis缓存穿透、缓存并发、热点缓存之最佳招式
  5. 怎么确定迭代器后面还有至少两个值_为什么range不是迭代器?range到底是什么类型?
  6. 期货大赛项目|九,fileinput插件的应用
  7. 如何用Pygame写游戏(十一)
  8. HDU 5691 ——Sitting in Line——————【状压动规】
  9. TextView滚动功能的实现
  10. js 设置div超出宽度隐藏_【CSS/JS】如何实现单行/多行文本溢出的省略(...)--绕过坑道的正确姿势...
  11. SoapUI WebService 接口测试
  12. c语言考研必刷题小程序,小程序推荐:大学生必备刷题小程序,内容涵盖各种证书考试题型...
  13. 【中级计量经济学】Lecture 8 虚拟变量回归
  14. web自动化:web控件交互操作/多窗口处理/网页frame
  15. 2022 火狐插件 Tamper Data 下载安装使用教程
  16. 错误隐藏学习手记(五)
  17. 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)
  18. 【多线程】四种种方案实现多线程之间相互协作的通信
  19. 一个电子发票开票平台的系统架构设计(02)
  20. Express Invoice Plus for Mac是什么软件?Mac发票管理软件推荐!

热门文章

  1. 1005打印任务取消不了 hp_HP打印机打印时任务打印不了时无法取消
  2. 【C语言】用C语言输出菱形
  3. 密西根州立大学计算机qs分数,密歇根州立大学2021年QS世界大学排名第157
  4. python学习笔记30(利用turtle绘制最基本的几何图形)
  5. win10共享磁盘/硬盘提示“您没有权限访问,请与网络管理员联系请求访问权限”解决方案
  6. Linux下显示IP地理位置信息的小工具—nali(很强大)
  7. Window10 Excel复制粘贴卡死
  8. 数据分析岗位求职经验分享
  9. 中国研修网计算机培训心得,网络研修培训心得体会(精选7篇)
  10. java怎么调字体_Java怎么设置字体