IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

Vimer 2012-10-14 22:13:39 累计浏览 4,229 次
本机暂存

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

    笔者在腾讯主要负责开放平台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的截图:

    

    

    

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 微信扫码登录网页实现原理 (累计阅读 17,467)
  2. 初探单点登录 SSO (累计阅读 10,618)
  3. 别得瑟了,你很可悲! (累计阅读 7,917)
  4. 如何设计用户登录 (累计阅读 6,644)
  5. 你会做Web上的用户登录功能吗? (累计阅读 6,376)
  6. 基于PECL OAuth打造微博应用 (累计阅读 5,212)
  7. 一个简单的基于PhoneGap的开源微博客户端 (累计阅读 5,163)
  8. 深入理解OAuth与豆瓣OAuth test (累计阅读 5,084)
  9. 为什么要登录? (累计阅读 5,060)
  10. 新浪微博OAuth认证流程分析 (累计阅读 5,023)