oauth2.0协议接口-第一篇-api逻辑
开放平台是支持OAuth2.0和RESTful协议的资源分享平台,经过授权的合作伙伴可以读取和写入资讯、用户、文件、数据库等资源。
1.创建数据库表结构
CMSSyncClient(数据同步客户端)
CMSSyncGateway(数据同步网关)
CMSSyncAuth(数据同步授权)
CMSSyncSession(数据同步令牌)
CMSSyncLog(数据同步日志)
2.身份验证
接入BICloud开放平台的合作伙伴首先需要申请开发者账号,在开放平台>>身份验证模块中可以管理身份验证信息。
点击添加按钮后,按页面提示输入合作伙伴名称、开发者账号、开发者密钥即可。

2.应用服务
开放平台可供调用的API共40余项,其中每一项均对应一种资源,例如文章、政策、用户等。每项资源包括四种操作:
l Read:读取资源内容,公开、受限、私有权限可访问
l Create:创建新资源,受限、私有权限可访问
l Update:更新资源内容,私有权限可访问
l Delete:删除现有资源,私有权限可访问
点击添加按钮可以为指定的开发者账号开通资源访问权限,未授权的API默认访问权限为公开,已授权的API默认访问权限为受限,已授权并拥有用户令牌的API默认访问权限为私有。

按页面提示选择需要开通的API,然后点击确认按钮。

3.api请求类基类编写
/// <summary>
/// 验证并处理请求
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
context.Response.Charset = "utf-8";
//获得用户身份
string getwayUrl = Path.GetFileNameWithoutExtension(new Uri(ALHttpIO.ResolveFullUrl(ALHttpIO.RawUrl)).LocalPath);
string apiKey = context.Request.Headers["ApiKey"] ?? context.Request.QueryString["ApiKey"]; //用户标识 //获得请求信息
string content = this.getRequestContent(context);
this.Request = CMSSyncRequest.Parse(context.Request.QueryString["format"], (context.Request.Form.Count == ) ? content : "");
if (this.Request.Format == null)
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "不支持的传输格式"));
return;
}
this.Ident = CMSSyncAuthBO.GetToken(getwayUrl, apiKey, this.Request.ActionCode);
if (!Ident.Verify(content, securityToken) || !CMSSyncClient.API_Enable)
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "安全令牌校验失败"));
return;
}
try
{
//获得请求参数
CMSSyncEventArgs ev = new CMSSyncEventArgs(this.Request);
switch (this.Request.ActionCode)
{
case "Create":
if (this.Create != null)
this.Create(this, ev);
else
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
return;
}
break;
case "Update":
if (this.Update != null)
this.Update(this, ev);
else
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
return;
}
break;
case "Delete":
if (this.Delete != null)
this.Delete(this, ev);
else
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
return;
}
break;
case "Read":
if (this.Read != null)
this.Read(this, ev);
else
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
return;
}
break;
default:
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "未知指令:" + this.Request.ActionCode));
return;
}
this.EndResponse(context, ev.Response);
return;
}
catch (Exception ex)
{
this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "运行时异常:" + ex.Message));
return;
}
}
oauth2.0协议接口-第一篇-api逻辑的更多相关文章
- 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)
背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...
- 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结
目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...
- OAuth2.0学习(1-11)新浪开放平台微博认证-使用OAuth2.0调用微博的开放API
使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/ ...
- 《OAuth2.0协议安全形式化分析-》----论文摘抄整理
---恢复内容开始--- 本篇论文发表在计算机工程与设计,感觉写的还是很有水准的.实验部分交代的比较清楚 本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2 ...
- 第三方登录,一般都是遵循OAuth2.0协议。
1. QQ登录OAuth2.0协议开发流程 1.1 开发流程 申请接入,获取appid和appkey; 开发应用,设置协作者账号,上线之前只有协作者才能进行第三方登录 放置QQ登录按钮(这个自己可以用 ...
- Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露
2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...
- 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议
概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...
- Oauth2.0 协议简介及 php实例代码
转自:http://www.dahouduan.com/2017/11/21/oauth2-php/ https://blog.csdn.net/halsonhe/article/details/81 ...
- 理解OAuth2.0协议和授权机制
无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...
随机推荐
- 前端性能优化-Cookie
什么是Cookie Cookie可以理解成为浏览器内部存储数据的一个数据库,并会随请求一起被发送:Cookie以键-值对的形式存在.可以存储网站的一些数据,这部分数据不会随着浏览器关闭而被清除.如下图 ...
- js跳转到邮箱登录
做邮箱验证时为了用户体验,往往会有跳转到邮箱登录这一按钮,其中的js如下: $("#btnemail").click(function () { var userEmail = $ ...
- 5.vs的各个组成部分
启动vs (1).双击vs的打开图标 (2).输入devenv 编写项目时,命名的时候,尽量不要使用中文. 我们暂时将.cs文件理解为是一个类文件. 在 视图菜单 下可以打开 解决方案资源管理器 ...
- 深入理解java虚拟机阅读笔记(1)运行时数据区域
java虚拟机所管理的内存区域主要分为方法区.堆:虚拟机栈.本地方法栈.程序计数器,如图: 1.程序计数器是当前线程所执行的字节码行号指示器,用以记录当前指令执行的位置.程序计数器是线程私有的,每个线 ...
- nopCommerce 4.10 发布了
我们的开发工作主要集中在将nopCommerce转移到.NET Core 2.1,性能和架构改进,进一步增强和修复错误. NopChommerce 中文社区:http://www.nopcn.com ...
- Axis Java调C# Webservice
这是一个痛苦的过程,如果java对java的webservice可以说很方便,很简单,Axis,CXF等一系列框架生成客户端直接传参调用即可,但是异构语言就有点麻烦了,生成的客户端不好使......无 ...
- Android基础Activity篇——Intent返回数据给上一个活动
1.如果活动B要将数据返回给活动A,那么需要以下三步: 1.1在活动A中使用startActivityForResult()方法启动活动B. 1.2在活动B中使用setResult()方法传回Iten ...
- 【起航计划 009】2015 起航计划 Android APIDemo的魔鬼步伐 08 App->Activity->QuickContactsDemo 联系人 ResourceCursorAdapter使用 QuickContactBadge使用
QuickContactsDemo示例介绍了如何使用Content Provider来访问Android系统的Contacts 数据库. Content Provider为不同应用之间共享数据提供了统 ...
- day004-Map类
1.Map集合概述 Map是一个接口,只要是实现了该接口的类就是一个双列集合. 双列集合就是每次存储元素时需要存储两个元素的集合. 这两个元素称为键值对, Key Value ==>映射关系 特 ...
- 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)
亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的.能够加我的QQ2059055336和我联系. 课程背景 本课程是教授使用WPF.ADO.NET.MVVM技术来实现太平人寿保险有限公司 ...