如何接入易班第三方登录
title: 如何接入易班第三方登录 date: 2018-04-04 17:40:25 tags: 第三方登录
工作室接手易班,免不了的要在他的平台上做些事情,第一次去实现第三方登录应用 记录下(实际为了填博客)
首先一句话总结方法吧:看文档......... 感觉每个第三方调用使用都是差不多的
这是官方给出的易班授权的流程图 看来我之后我们应该能很明白我们要做两件事情:
- 获取授权令牌
- 通过授权令牌获取授权凭证
当得到授权凭证,我们就能通过授权凭证改进 我们原本鉴权以适应第三方登录 官方原理就不重复了,只是展示一下实践过程的代码
获取授权令牌
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
如何接入易班第三方登录相关推荐
- 易班APP登录密码加密、sig逆向分析
1.最近闲来无事,听说有一个易班app登录好练手,就去试了一下看看. 先抓个包看看 然后使用了腾讯的壳,脱一下,我这边用的是BlackDex64. 脱完壳之后导出来直接导出来拖到jadx,就是现在这个 ...
- sdk没有登录什么意思_不需要接入SDK的第三方登录及分享
讲到第三方登录分享,第一反应大概就是友盟.ShareSDK之类.集成微信.QQ.微博三个平台的话,友盟的SDK有62.9M,ShareSDK的包有74M.如果直接集成最原始的三个平台的SDK,大小总共 ...
- 只要五分钟,让你成功接入Twitter的第三方登录
第一步: 依赖Twitter的依赖库 首先在整个项目的build.gradle中的 repositories 里添加maven如下: repositories {mavenCentral()maven ...
- JAVA接入支付宝授权第三方登录
支付宝沙箱授权 开发前准备 支付宝沙箱环境申请使用 获取用户授权 生成唤起支付宝授权连接 回调地址接收支付宝参数 构建请求支付宝客户端 业务流程代码 串业务 开发前准备 支付宝开发平台. 支付宝接口A ...
- 如何使用java调用易班登录API获取个人账号信息(一)
关于这篇文章: 笔者近期和小伙伴接了校方的一个小小小项目,要求使用易班APP的账号,这意味着需要调用易班官方的登录API.下面介绍使用java语言作为后端,在自己的网站如何接入易班的登录API(轻应用 ...
- 易班自动打卡+钉钉机器人消息提醒
(一)声明 本文仅供学习交流使用,如有发热.感冒.咳嗽请及时根据当地疫情防控办法及时上报 (二)需求 首先,我双手支持和配合学校相关疫情防控政策. 其次,每天重复劳动让我们软件专业情何以堪.说干就干, ...
- 易班php,易班轻应用开发:PHP版
最近易班的APP接入了我们学校,虽然很多地区评价为毒瘤,流氓等等,应用市场评价也是最低级别.但是,作为开发者,就不管它了,本文写的是一个查询成绩的轻应用(传送门:青果教务查成绩),这里就只说说,如何接 ...
- mysql用户登录和第三方登录_mysql 用户表结构设计,第三方登录
说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...
- 第三方登录mysql表_浅谈数据库用户表结构设计,第三方登录
说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...
- 数据库表设计-第三方登录用户表结构设计
说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...
最新文章
- 技术人员突围就业寒冬的最优途径 | 拿不到AI核心岗位Offer全额退款
- 存储控制器wwn号_正文-新华三集团-H3C
- Linux之父警告全球程序员:我刚发布的5.12内核有bug,你们千万别用
- redis有值查询返回null_Redis缓存穿透、缓存并发、热点缓存之最佳招式
- 怎么确定迭代器后面还有至少两个值_为什么range不是迭代器?range到底是什么类型?
- 期货大赛项目|九,fileinput插件的应用
- 如何用Pygame写游戏(十一)
- HDU 5691 ——Sitting in Line——————【状压动规】
- TextView滚动功能的实现
- js 设置div超出宽度隐藏_【CSS/JS】如何实现单行/多行文本溢出的省略(...)--绕过坑道的正确姿势...
- SoapUI WebService 接口测试
- c语言考研必刷题小程序,小程序推荐:大学生必备刷题小程序,内容涵盖各种证书考试题型...
- 【中级计量经济学】Lecture 8 虚拟变量回归
- web自动化:web控件交互操作/多窗口处理/网页frame
- 2022 火狐插件 Tamper Data 下载安装使用教程
- 错误隐藏学习手记(五)
- 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)
- 【多线程】四种种方案实现多线程之间相互协作的通信
- 一个电子发票开票平台的系统架构设计(02)
- Express Invoice Plus for Mac是什么软件?Mac发票管理软件推荐!
热门文章
- 1005打印任务取消不了 hp_HP打印机打印时任务打印不了时无法取消
- 【C语言】用C语言输出菱形
- 密西根州立大学计算机qs分数,密歇根州立大学2021年QS世界大学排名第157
- python学习笔记30(利用turtle绘制最基本的几何图形)
- win10共享磁盘/硬盘提示“您没有权限访问,请与网络管理员联系请求访问权限”解决方案
- Linux下显示IP地理位置信息的小工具—nali(很强大)
- Window10 Excel复制粘贴卡死
- 数据分析岗位求职经验分享
- 中国研修网计算机培训心得,网络研修培训心得体会(精选7篇)
- java怎么调字体_Java怎么设置字体