日期:2014-05-20  浏览次数:20660 次

请教:百度知道,数据合作模式开发,大家有搞过的吗?
http://www.baidu.com/search/openiknow/index.html
公司和百度合作,公司的一个问答模块与知道模块接口合作。需要提交申请文档。
因为百度接口也是刚做的,分为,频道合作模式和数据库合作模式。
我们使用的是数据合作模式,但是百度只给了一个api,里面写的很简单。连个demo都没有。
而且只是php语言的。我们的网站是jsp的。
现在一头雾水不知道改如何下手。

------解决方案--------------------
楼主可以参考。

用户系统开放API接口开发文档 v2.1
百度知道研发组

文档声明:首先欢迎各合作站点加入百度开放知道平台,请各个合作站点技术人员认真仔细阅读该接口开发文档,接口开发完成后,请参考第3项中的check list中的描述步骤进行仔细确认,确保接口功能正常,减少后续联调反复的代价。感谢各个合作站点的有效配合!

1. 背景
在开放知道运作模式下,为了能够更好的接入合作站点的用户系统,第三方用户系统中的用户可以直接使用开放知道的服务。为了实现该功能效果,需要合作站点和开放知道一定的交互协作,共同认证识别合作站点用户的真实身份,记录用户积分、用户贡献以及页面展示。
2. 接口开发
为了完成用户身份验证,登陆等功能需求,主要需要合作站点提供以下4个接口:
2.1 接口一 用户登录
第三方需提供的功能简介:
1. 合作站点提供完整的登录页面
2. 用户在登录页面登录成功后需要生成唯一性的Token(映射用户身份),然后需要将该token保存在站点大域的cookie中(确保zhidao.xxx.com域名能够获取到该cookie),例如www.xxx.com
3. 由于用户名密码错误等原因导致的登陆失败,在登录页面中直接给予提示,引导用户成功登陆,登陆成功后需要能够进行页面回调
请求URL Demo:
http://login.xxx.com/login.jsp?callback=http://zhidao.xxx.com/login_finish
url格式合作站点可自行确定,但是回调参数名称需要和其它下面接口统一一致,例如callback
回调URL Demo:
http://zhidao.xxx.com/login_finish?token=XXXYYYZZZ (参数名称需要等于token)
回调URL从请求URL的callback参数中获取,需要携带token参数
执行流程:
 
Token生成可选方案:
1. 根据用户信息(uid、uname等)加密生成token,验证token时可反解出用户信息提供给应用
2. 随机生成唯一Token,然后维护token到用户身份的映射关系
合作站点可根据当前用户系统情况,考虑复用现有Cookie、DB维护映射关系等方案实现Token的生成、验证。Token生成后保存在站点大域的cookie下,供问答平台后续用户身份验证使用。

2.2 接口二 用户身份验证
功能描述:验证请求URL中token参数的值是否有效,如果无效则返回未登录标识,如果有效则返回该用户的用户名和用户ID。
注意:用户身份验证是服务器发起验证请求,不携带浏览器cookie等本地信息,用户系统验证token有效性仅根据GET参数中的token对应的值进行判断,请勿使用本地cookie中任何内容为辅助判定依据。否则会导致验证失败!
请求URL Demo:
http://login.xxx.com/auth.jsp?token=XXXYYYZZZ (参数名称需要等于token)
返回数据格式如下:
 
注:返回数据请直接将string输出至页面,且勿附带其它无效信息,用户名等中文请采用UTF-8编码
执行流程参见下图:
 

2.3 接口三 用户登出
功能描述:用户执行登出操作,参数携带之前用户登陆生成的token以及回调URL,用户系统处理登出后需要配合清理cookie中的token,然后回调URL。
请求URL Demo:
http://logout.xxx.com/logout.jsp?token=XXXYYYZZZ&callback=http://zhidao.xxx.com/user/exit

2.4 接口四 用户注册
功能描述:
1. 合作站点提供完整的注册页面
2. 用户注册成功后,需要自动进入登陆状态,并且支持回调指定页面,登陆细节同登陆接口一致,包括生成token以及写入cookie
请求URL Demo:
http://register.xxx.com/register.jsp?callback=http://zhidao.xxx.com/login_finish
回调URL Demo:
http://zhidao.xxx.com/login_finish?token=XXXYYYZZZ (参数名称需要等于token)

3. Check List
3.1 用户登陆接口
1. 浏览器中输入用户登陆接口URL,例如(xxx为贵网站域名)
http://login.xxx.com/login.jsp?callback=http://www.xxx.com ,正常情况下应该展示贵网站的用户登陆页面
2.在1中展示的登陆页面中进行用户登陆操作,如果登陆失败提示失败原因,让用户继续完成登陆,如果登陆成功,那么页面应该能够自动跳转至callback参数所指向的URL http://www.xxx.com ,并且跳转的url格式应该为http://www.xxx.com?token=AAABBBCCCDDD 
AAABBBCCCDDD是贵网站根据uid uname等信息生成的token
3. 在2中提到的回调callback指定的页面http://www.xxx.com ,查看该大域下是否将token的信息写入了cookie中,如果cookie项存在,则表示正常,否则异常

3.2 用户身份验证接口
1. 基于3.1用户登陆接口的验证成功,我们能够在callback回调之后的url 
http://www.xxx.com?token=AAABBBCCCDDD 以及cookie中查看到token的具体信息,然后使用用户身份验证接口组拼URL http://login.xxx.com/auth.jsp?token=XXXYYYZZZ ,在浏览器中输入该URL,如果用户身份验证接口正常,那么能够返回正确的querystring格式的字符串包含uid和uname,例如errno=0&uid=777&uname=gyk
2. 如果步骤1的检测方式通过,那么请将步骤1中的URL换一种浏览器或者换一台机器上进行再一次的验证,看返回结果是否仍然正确,包含uid uname信息并且格式正确,如果返回结果一致,则验证接口OK,否则异常
3. 如果我们随意使用一个无效的token进行请求验证,返回的querysting应该为errno=-1
4. 如果用户系统支持中文用户名,那么请确认返回的中文用户名字符编码为UTF-8

3.3 用户登出接口
1. 组拼登出接口的URL,例如
http://logout.xxx.com/logout.jsp?token=AAABBBCCCDDD&callback=http://www.xxx.com ,调用该接口后确认是否进行了页面的回调跳转,如果未进行跳转则功能异常
2. 如果页面回调跳转了,确认一下登录成功后保存的token cookie项是否仍然存在,如果被删除了,接口功能正常,如果cookie项依然存在,则接口功能异常

3.4 用户注册接口
注册功能接口与登录功能接口类似,注册成功相当于登录成功后的状态,处理过程和结果应该和登陆接口保持一致,按照登陆接口的check list校验确认即可。



------解决方案--------------------














百度知道OPEN API接口规范文档V1.1