Home  >  Article  >  php教程  >  百度站内应用开发体验及demo代码

百度站内应用开发体验及demo代码

WBOY
WBOYOriginal
2016-06-21 08:51:08914browse

 

写在前面: 博客很久没有更新了,主要是事情实在太多,不过最近也确实做了些比较有价值的事情,后面和大家慢慢分享

笔者在腾讯主要负责开放平台openapi的工作,由于工作关系,这几天遍历了 百度、人人、新浪、淘宝 4个平台,研究了一下他们对于站内应用、网站登录、移动应用的整合方式,并开发了一个百度站内应用的demo。

百度站内应用demo:
体验地址(要体验的话,请先联系我开通白名单):
http://app.baidu.com/app/enter?appid=385894&debug=1&is_from_dev=1&canvas_pos=platform
代码已经开源在github上: https://github.com/dantezhu/baidu_app_demo,里面封装了一个baidu的sdk,有需要的朋友可以直接拿去用。
开发语言用的是 python+flask

移动应用 和 网站接入,这两种接入都是走的oauth的方式,这个基本所有平台都是一样的。
而对于站内应用则和腾讯目前不太一样,所以着重说明一下在这里的处理,仅以百度举例:
百度的教程在这里: 百度站内应用开发文档

1. 当用户点击应用列表进入时,百度会传给应用两个参数: bd_user, bd_sig,看起来很像腾讯开放平台的openid和openkey,但是实际上百度这两个参数是无法做到很强的登录态保证的,仅能用来保证这两个参数不是人为篡改的。

2. 如果两个参数校验通过,那么就要看应用的session中的userid和bd_user是否相同。其实这是百度推荐的一种应用开发方法,即为了避免每次用户进入应用都要调用oauth那一套登录体系,所以建议应用在第一次登录成功就写入到自己的session中。 对应到腾讯平台来看,我们其实并没有在wiki上强制或推荐要求用户这么做,主要是即使应用不写自己的session,每次都来调用腾讯验证openid、openkey的接口,对用户来说也不会有什么区别;但是对应百度的话,每次调用百度的登录授权接口,即使之前授权过也会弹出一次对话框(在文章最后的截图就能看出来)

3. 如果第2步相同的话,证明用户可能是刚刚刷新了页面,所以就直接进入应用主页。如果不相同,那么就要开始标准的oauth2.0登录。但是这里百度是只推荐用 server-side的方式来走的,所以编码有些复杂,但是安全性也高一些。

4. 如果用户登录授权ok,那么应用要在跳转到的redirect_url中写上session,然后跳转到首页。整个流程结束。

以下是我写的百度站内应用demo的截图:

最后要说下,百度对应用做了很多监控,比如在页面上必须放上monitor脚本,等等,这里值得我们借鉴。



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn