开放平台是支持OAuth2.0和RESTful协议的资源分享平台,经过授权的合作伙伴可以读取和写入资讯、用户、文件、数据库等资源。

1.创建数据库表结构

CMSSyncClient(数据同步客户端)

CMSSyncGateway(数据同步网关)

CMSSyncAuth(数据同步授权)

CMSSyncSession(数据同步令牌)

CMSSyncLog(数据同步日志)

2.身份验证

接入BICloud开放平台的合作伙伴首先需要申请开发者账号,在开放平台>>身份验证模块中可以管理身份验证信息。

点击添加按钮后,按页面提示输入合作伙伴名称、开发者账号、开发者密钥即可。

2.应用服务

开放平台可供调用的API共40余项,其中每一项均对应一种资源,例如文章、政策、用户等。每项资源包括四种操作:

Read读取资源内容,公开、受限、私有权限可访问

Create创建新资源,受限、私有权限可访问

Update更新资源内容,私有权限可访问

Delete删除现有资源,私有权限可访问

点击添加按钮可以为指定的开发者账号开通资源访问权限,未授权的API默认访问权限为公开,已授权的API默认访问权限为受限,已授权并拥有用户令牌的API默认访问权限为私有

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

3.api请求类基类编写

  1. /// <summary>
  2. /// 验证并处理请求
  3. /// </summary>
  4. /// <param name="context"></param>
  5. public void ProcessRequest(HttpContext context)
  6. {
  7. context.Response.ContentType = "application/json";
  8. context.Response.Charset = "utf-8";
  9. //获得用户身份
  10. string getwayUrl = Path.GetFileNameWithoutExtension(new Uri(ALHttpIO.ResolveFullUrl(ALHttpIO.RawUrl)).LocalPath);
  11. string apiKey = context.Request.Headers["ApiKey"] ?? context.Request.QueryString["ApiKey"]; //用户标识 //获得请求信息
  12. string content = this.getRequestContent(context);
  13. this.Request = CMSSyncRequest.Parse(context.Request.QueryString["format"], (context.Request.Form.Count == ) ? content : "");
  14. if (this.Request.Format == null)
  15. {
  16. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "不支持的传输格式"));
  17. return;
  18. }
  19. this.Ident = CMSSyncAuthBO.GetToken(getwayUrl, apiKey, this.Request.ActionCode);
  20. if (!Ident.Verify(content, securityToken) || !CMSSyncClient.API_Enable)
  21. {
  22. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "安全令牌校验失败"));
  23. return;
  24. }
  25. try
  26. {
  27. //获得请求参数
  28. CMSSyncEventArgs ev = new CMSSyncEventArgs(this.Request);
  29. switch (this.Request.ActionCode)
  30. {
  31. case "Create":
  32. if (this.Create != null)
  33. this.Create(this, ev);
  34. else
  35. {
  36. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
  37. return;
  38. }
  39. break;
  40. case "Update":
  41. if (this.Update != null)
  42. this.Update(this, ev);
  43. else
  44. {
  45. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
  46. return;
  47. }
  48. break;
  49. case "Delete":
  50. if (this.Delete != null)
  51. this.Delete(this, ev);
  52. else
  53. {
  54. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
  55. return;
  56. }
  57. break;
  58. case "Read":
  59. if (this.Read != null)
  60. this.Read(this, ev);
  61. else
  62. {
  63. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "非法操作:服务器尚未定义" + this.Request.ActionCode + "操作的响应"));
  64. return;
  65. }
  66. break;
  67. default:
  68. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "未知指令:" + this.Request.ActionCode));
  69. return;
  70. }
  71. this.EndResponse(context, ev.Response);
  72. return;
  73. }
  74. catch (Exception ex)
  75. {
  76. this.EndResponse(context, CMSSyncResponse.Create(this.Request, EnumCMSSyncResponseCode.Failed, "运行时异常:" + ex.Message));
  77. return;
  78. }
  79. }

oauth2.0协议接口-第一篇-api逻辑的更多相关文章

  1. 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)

    背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...

  2. 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结

    目录 第三方接入总结 OAuth2.0介绍 github OAuth2.0登录接入 国内第三方应用商SDK使用 微博SDK 腾讯QQ SDK passport.js插件使用 安装 相关中间件.路由 返 ...

  3. OAuth2.0学习(1-11)新浪开放平台微博认证-使用OAuth2.0调用微博的开放API

    使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/ ...

  4. 《OAuth2.0协议安全形式化分析-》----论文摘抄整理

    ---恢复内容开始--- 本篇论文发表在计算机工程与设计,感觉写的还是很有水准的.实验部分交代的比较清楚 本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2 ...

  5. 第三方登录,一般都是遵循OAuth2.0协议。

    1. QQ登录OAuth2.0协议开发流程 1.1 开发流程 申请接入,获取appid和appkey; 开发应用,设置协作者账号,上线之前只有协作者才能进行第三方登录 放置QQ登录按钮(这个自己可以用 ...

  6. Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露

    2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...

  7. 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议

    概述说明 CAS Server默认搭建出来,客户端程序只能按照CAS自身的协议接入.CAS的强大在于,有官方的插件,可以支持其他的协议.本章节就让CAS Server怎么增加OAuth2.0的登录协议 ...

  8. Oauth2.0 协议简介及 php实例代码

    转自:http://www.dahouduan.com/2017/11/21/oauth2-php/ https://blog.csdn.net/halsonhe/article/details/81 ...

  9. 理解OAuth2.0协议和授权机制

    无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...

随机推荐

  1. 【ubuntu】出现device not managed连接不上网络

    ubuntu安装好后显示“device not managed” 1. 编辑/etc/NetworkManager/NetworkManager.conf: sudo gedit /etc/Netwo ...

  2. 纯CSS控制背景图片100%自适应填充布局

    https://blog.csdn.net/wd4java/article/details/50537562 解决:   html,body{height: 100%;width: 100%;marg ...

  3. php 设置虚拟目录

    php 设置虚拟目录两个步骤,很简单. 第一,打开安装apache目录下的conf下面的httpd.conf文件.   找到IfModule 标记, 再它下面添加红色方框中的内容.注意不能少东西.   ...

  4. dapper.net框架使用随笔

    一.简单介绍 Dapper是轻量级的ORM工具,代码就SqlMapper.cs一个文件,对于习惯使用原生的sql语句用户是个好选择,具有以下特性. 1.类似 ado.net 的写法,灵活拼接sql 2 ...

  5. Navicat连接Oracle数据库报错ORA-28547解决方法

    先说明下我机器的环境: 1.Win10 - 64bit 2.Navicat Premium_11.2.7  - 64bit 3.未安装Oracle数据库(包括Client也未安装) 解决方法: 1.下 ...

  6. Hibernate课程 初探一对多映射3-1 单向多对一简介

    多对一的关系和关系数据库中的外键参照关系最匹配,即在己方的表中的一个外键参照另一个表中的主键! 通过在多方持有一方的引用来实现,需要在多的一方使用<many-to-one>来配置

  7. java web api接口调用

    Web Services 被W3C进行了标准化定义. Web Services 发布到网上,可以公布到某个全局注册表,自动提供服务URL,服务描述.接口调用要求.参数说明以及返回值说明.比如中国气象局 ...

  8. 织梦dedecms去除友情链接中的li和span

    文件:/include/taglib/flink.lib.php 1.去除友链中的li if(trim($ctag->GetInnerText())=='') $innertext = &quo ...

  9. 【Node.js】一个愚蠢的Try Catch过错

    前段时间学习<深入浅出Nodejs>时,在第四章 - 异步编程中作者朴灵曾提到,异步编程的难点之一是异常处理,书中描述"尝试对异步方法进行try/catch操作只能捕获当次事件循 ...

  10. 关于android项目的习惯

    编码使用UTF-8. 布局中多写style,常用字号颜色尺寸写进values对应文件 如中号 小号 大号 下部按钮颜色 上标题颜色 左边距,右边距,等. 任何文件类型通用名放在最前 如item_a;i ...