《PDO统一接口开发规范.doc》由会员分享,可在线阅读,更多相关《PDO统一接口开发规范.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、方案由 ( 电饭锅行业门户 ) 提供PDO统一接口开发规范1.0本规范由动易(powereasy),动网(dvbbs),oblog三方联合制订和维护,其目的在于为不同的WEB应用按照统一的规范开发用户通行接口,以便实现不同WEB应用之间的用户数据同步。本规范不限制WEB应用开发所使用的平台、开发语言、数据库,可以适用于任何基于B/S架构的WEB应用。只要按照本规范提供完整接口和数据处理支持的WEB应用,均可称“支持PDO1.0”。支持本规范的所有WEB应用,其技术文档中应该提供对本规范中的元素支持程度的详细说明,以供其它WEB应用开发人员以及进行二次开发的用户参考。目 录 消息格式 1. 请求
2、格式 2. 响应格式 元素定义 1. 元素对照表 2. 元素使用说明 3. 接口安全码 方法定义 1. 检查用户名、邮箱是否可以注册 2. 注册新用户 3. 用户登录 4. 更新用户资料 5. 删除用户 6. 查询用户资料 Cookies处理 一、消息格式1.请求格式请求包必须是一个构造良好的xml文档,以post方式由XMLHttpRequest对象发送。为了避免不同编码下产生乱码,该xml中的文本应该用DOM创建而不能用字符串形式创建。请求中的蓝色斜体部分在实际运用时要由实际值替代。每个元素的详细定义和数据格式参考“元素列表”,直接写出元素名的元素为所有请求包都必须提供的数据。POST H
3、TTP/1.1Content-Type: text/xml; charset=gb2312 程序标识操作类型安全码 用户名 2.响应格式响应包必须是一个构造良好的xml文档。为了避免不同编码下的乱码,该xml中的文本应该用DOM创建而不能用字符串形式创建。请求中的蓝色斜体部分在实际运用时要由实际值替代。每个元素的详细定义和数据格式参考“元素列表”,直接写出元素名的元素为所有请求包都必须提供的数据。当操作状态为失败时,必须提供具体的错误描述。其它情况下,根据具体的操作类型和定义决定body及其子元素。HTTP/1.1 200 OKContent-Type: text/xml; charset=g
4、b2312Content-Length: length程序标识操作结果 操作不成功时返回的错误描述 二、元素定义1.元素对照表类别元素名称数据格式可选值使用方式备注整合所需字段root-通用根元素appidstringdvbbspowereasyoblogother通用程序标识actionstringchecknamereguserlogin updatedelete getinfo请求包操作类型syskeystring接口安全码请求包安全校验码16位加密statusinteger0=操作完成1=操作失败返回包操作结果body-返回包响应信息或数据messagestring-返回包错误描述信息
5、。usernamestring-请求包用户名passwordstring-请求包用户密码(未加密)emailstring-通用电子邮件questionstring-通用密码提示问题answerstring-通用密码提示答案(未加密)savecookiestring0=不记录(默认)1=一周2=一月3=一年通用cookies保存时间用户基本信息truenamestring-通用真实姓名genderstring0=女1=男2=保密通用性别birthdaydate-通用生日qqinteger-通用QQ号msnstring-通用MSN帐号mobilestring-通用移动电话telephonestri
6、ng-通用固定电话provincestring-通用省/直辖市citystring-通用城市/区/县addressstring-通用通讯地址zipcodestring-通用邮政编码homepagestring-通用个人主页useripstring-通用用户IP地址用户属性jointimedatatime-通用注册日期experienceinteger-通用经验值ticketinteger-通用可消费积分valuationinteger-通用贡献值balancedouble-通用现金余额postsinteger-通用发表信息数userstatusinteger0=正常1=锁定2=屏蔽3=禁止4=
7、待验证通用用户状态2. 元素使用说明本规范定义的元素共分为三组,其中第一组为实现整合通行所有程序必须支持的元素,第二、三组为各程序开发人员根据自己的情况可以自行决定是否支持的元素。第二三组元素的主要作用在于方便利用整合接口进行跨程序的扩展功能开发,在正常情况下。整合接口提供的各种操作可以提供或者不提供这两组元素,由开发人员自决,但是提供整合接口支持的各程序应当公布提供自己程序对扩展元素的支持程度和细节,以便其它程序的开发人员以及有能力的用户开发插件参考。为此在操作类别中增加了getinfo这一项,当向一个程序发送类型为getinfo的请求时,被请求方应当按照自己公布的支持情况返回尽可能多的信息
8、以供共享利用。元素中所有的元素名严格区分大小写,规定所有元素必须使用小写字母。3. 接口安全码接口安全码“syskey”是用来检验程序间传输的数据来源合法性的依据。syskey元素是一个文本元素,值为一个定长16字节的字符串。该字符串由当前传输中包含的用户名和各程序接口配置文件中用户定义的密钥连接起来,再进行16位MD5加密得出。如:strKey = ItIsMyKey 用户自己定义的密钥,所有整合到一起的程序的密钥都应该相同username = xmldom.getElementsByTagName(username).item0.text 当前传输中包含的用户名syskey = MD5(s
9、trKey&username,16) 注意:由于username可能包含中文等字符,进行Md5加密时应当使用从xml中解析出来的username进行加密,才能与服务器端的处理结果一致。如果直接用没有经过dom处理的字符串进行加密,可能会导致发送的安全码与服务器端的安全码不一致。下面的代码演示了产生相同安全码的过程:客户端发送请求前strKey = ItIsMyKeyusername = 用户名先用DOM将字符串的username变成xmlNode的Textxmldom.getElementsByTagName(username).item0.text = username再用DOM从xml中解
10、析出用户名username = xmldom.getElementsByTagName(username).item0.textsyskey = MD5(strKey&username, 16)-服务器端接收请求后strKey = ItIsMyKeyusername = xmldom.getElementsByTagName(username).item0.textsyskey = MD5(strKey&username, 32)syskey2 = xmldom.getElementsByTagName(syskey).item0.text这样得出的syskey就和syskey2才能一致 三、
11、方法定义以下部分对action元素的各项值对应的操作做出统一规定,格式为:操作类型(必须元素1,必须元素2.)每个操作的定义之后,对该操作所实现的功能和返回值做具体说明。其中appid、syskey、username为所有请求操作必须提供的参数,在定义中予以省略。返回操作中的xml均不包含syskey、username两个元素。返回消息中status不等于0的,必须包括body元素及其子元素messenge。1.检查用户名、邮箱是否可以注册定义:checkname() 作用:对请求中提供的用户名及email(如果有的话)进行验证,检查是否符合注册要求。2.注册用户定义:reguser(pass
12、word,email,question,answer)作用:利用请求中提供的用户信息,进行用户注册。3. 用户登录定义:login(password)作用:利用请求中提供的用户名、密码和cookies选项(默认为0,不保存)为用户登录。4. 用户注销定义:logout()作用:注销请求中指定的用户。5. 更新用户资料定义:update()作用:利用请求中提供的信息来更新用户资料。6. 删除用户定义:delete()作用:根据请求中提供的用户名,对用户进行删除,当有多个用户时,用下面的形式提交(这里与其他操作有不同,接受方应当注意判断处理):用户名1,用户名2,用户名37. 查询用户信息定义:g
13、etinfo()作用:检索请求中指定的用户的信息,成功时返回本规范支持的所有元素,对于没有对应字段的元素值,返回空元素,但不能省略。四、Cookies处理1.响应方的处理由于XMLHTTP是服务器间的请求和响应,被请求方不能向请求方进行写cookies操作,为了实现同步登陆,接收请求的检验方在响应请求的接口文件中,必须增加处理Request.QueryString的程序逻辑,当检测到QueryString中包含数据时,说明是对Cookies操作的请求,要完成下列工作:1).从Request.QueryString中提取四个参数:syskey,username,password,savecook
14、ie;2).利用username和syskey,进行安全码验证;3).用户密码是否为空,如果不为空,则为该用户进行登录处理,否则对该用户进行注销处理。4).完成,无需返回任何信息。如果Request.QueryString为空,则说明收到的是服务器端XMLHTTP请求,进行相关处理。2.请求方的处理发送请求在进行注册、登陆操作时,首先用XMLHTTP请求其它系统进行相关检验,解析检验方返回的xml数据说明可以注册或登陆成功时,完成本地相关操作后,还须构造一个script脚本调用或iframe页面引用,输出到页面的HTML代码。该脚本或引用的路径为:接口文件URL?syskey=16位安全码&username=用户名&password=16位MD5加密的用户密码&savecookie=Cookie保存选项如果是处理登陆cookies,则syskey、username、password必须同时提供,savecookie可选;如果是处理注销,则只有syskey和username必需。工作组成员:悟空(动网)、感觉(Oblog)、小李刀刀(动易)最后修订日期:2006-04-14