公司网站搭上了百度知道的开放平台,看了一天的接口文档,云里雾里的,网上的资料也不多,又咨询了下其他接过这个的同行,才明白流程,如下:
1、申请合作平台(这个就不用说了,关键说如何进行用户整合)
2、官方api文档要求提供四个主要请求地址:
a、用户登录url
这个其实就是点击知道平台的登录要跳转的地址,就是网站登录页所在地址,以我们网站为例:
Java代码
- http://www.gbicom.cn/user.php?act=login&callback=http://zhidao.gbicom.cn/user/login_finish
复制代码 测试的时候这个地址要能展示登录页,其中callback这个参数的名称可以自定义,但后边一定要写成/user/login_finish的形式,官方文档中少了/user/
在这个登录的程序中,利用原登录的逻辑,主要是在登录成功后将用户的uid或uname加密成串写入cookie中,cookie的名字要唯一,以便后边验证调用,然后进行跳转,如下:
Java代码
- header("Location:http://zhidao.gbicom.cn/user/login_finish?&token=XXX");
复制代码
其中的XXX就是上面加密后的值.
b、用户身份验证url
Java代码
- http://www.gbicom.cn/user.php?act=auth&token=****
复制代码
因为知道有好几个页面,因此在a中的请求完成后,百度会根据token的值去寻找网站大域下的cookie,这个cookie即是上一步中生成的cookie,两者如果相同,即验证成功,返回数据如下:errno=0&uid=***&uname=***
如果失败,则会返回errno=-2或errno=-1(这个根据具体情况)
其中uid和uname即利用百度请求的token值进行反解后生成的值,可直接echo出上述结果,例如:
Php代码
- if($result){ echo "errno=0&uid=***&uname=***";}else{ echo "errno=-1";}
复制代码
记住,不要返回其他无关内容!并且在验证中绝对不能利用刚才的cookie验证,要读取数据库或反解token来生成结果!!
c、用户退出url
Java代码
- http://www.gbicom.cn/user.php?act=logout&token=*****&callback=http://zhidao.gbicom.cn/user/exit
复制代码
在这个请求中要删除生成的cookie,并且跳转到 http://zhidao.gbicom.cn/user/exit.
d、用户注册url:
Java代码
- http://www.gbicom.cn/user.php?act=register&callback=http://zhidao.gbicom.cn/user/login_finish
复制代码
官方又少了/user/(鄙视下),注册成功后就像登录一样跳转到:
Java代码
- header("Location:http://zhidao.gbicom.cn/user/login_finish?&token=XXX");
复制代码
e、cookie的名称:
这个就是存储token值的cookie名称,可以随意命名,主要为了使百度能进行token值比对。
在没有向百度提交之前进行本地的测试,即输入这些地址,查看结果,这个文档里有checklist,已经说的很清了!
其他的就没有了,注意一定要严格按照上述的url格式,不能少一个参数,否则会发生各种错误!!
上边只是接口的逻辑细节,如果要进行二次开发,要针对不同系统逻辑进行改造,但主要还是上述的内容,其他的积分兑换之类的以后遇到了再说!!
测试成功后即可填写如下项目向百度平台人员提交,很快就接上了!
站点名称
站点域名
联系Email
登陆接口URL
注册接口URL
验证接口URL
登出接口URL
Cookie中存储Token的名称项
来自:http://bryant24.iteye.com/blog/815664
|
上一篇: 帮忙看看问题下一篇: 关于版主已阅1.2的问题
|