百度统计 API 接入的坑及 access_token 生成工具

两种帐号模式

  • 「百度商业帐号」:面向百度推广、百度网盟、百度联盟、百度统计、百度司南等帐号,能够理解为面向企业用户。
  • 「百度帐户」:面向百度搜索、百度贴吧、百度云盘、百度知道、百度文库等产品,面向通常个体用户。
  • 两种帐户系统不同,不互通。网上教程与类库,针对的是「百度商业帐号」,针对「百度帐户」的教程几乎没有。
  • 本文介绍的是「百度帐户」的接入方式。

两种帐户系统使用的调用凭证不一样

  • 「百度商业帐号」html

    • 调用接口使用的是「token」
    • 「token」在「百度统计-数据导出服务」页面,点击「当即开通」,由系统自动生成。
  • 「百度帐户」node

    • 在「百度统计-数据导出服务」页没有「当即开通」的按钮。
    • 调用接口使用的是「access_token」,而不是「token」
    • 「access_token」须要通过 oauth/2.0 协议生成。

access_token 生成过程

首次换取 access_token 的过程,须要在浏览器端完成,没法纯服务器端完成git

  • 【第零步】github

  • 【第一步】后端

    • 在浏览器中,访问这个连接 http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${apiKey}&redirect_uri=${redirect_uri}&scope=basic&display=popup
    • 浏览器将重定向到百度受权的页面,用户进行登陆受权
  • 【第二步】api

    • 用户登陆受权,输入帐号密码受权
    • 受权成功后,将重定向到 redirect_uri 中,并在 URL 中携带 code 参数。
    • redirect_uri 地址,须要在「安全设置」中配置
    • 这一步须要在浏览器中完成,没法脱离浏览器,靠纯服务器完成。
  • 【第三步】浏览器

    • 经过 code 换取 access_token
    • 访问这个连接http://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=${code}&client_id=${apiKey}&client_secret=${secretKey}&redirect_uri=${redirect_uri}
    • 返回只是一个包含「access_token」与「refresh_token」的 json
  • 【刷新 access_token 】安全

    • access_token 的有效期是一个月,refresh_token 是十年。
    • 经过「apiKey」「secretKey」与「refresh_token」可调用接口刷新「access_token」与「refresh_token」。
    • 无需再经由服务器。
  • 【总结】服务器

    • 除去首次获取「access_token」外,后续接口调用,以及「access_token」的刷新,都可在服务器端完成。须要再经由浏览器。
  • 【注意】

    • redirect_uri 与百度统计的网站域名没有关系。只校验是否在「安全设置」中配置过。除此之外,没有限制(内网地址都行)。
    • redirect_uri 只在「第一步」「第三步」中使用,只用于首次换取 access_token,只使用一次。刷新 access_token 不须要用到。

redirect_uri 保存不生效的坑

  • 笔者偶现 redirect_uri 保存不生效,实际生效的还是以前填的回调地址。
  • 可新开项目便可解决该问题。

access_token 生成器

鉴于只有初次建立 access_token 的过程才会到浏览器,且后续状况 redirect_uri 都是无心义的。故首次获取 access_token 的过程是不可复用,只需一次的。笔者将该步骤封装成工具,供获取 access_token 使用。

使用方式

  • 将工具连接http://blog.luckly-mjw.cn/tool-show/baidu-statistics/index.html填入「安全设置」中。redirect_uri 只用于回调,无域名限制,无安全风险。
  • 填入「API Key」「Secret Key」,仅用于后续将 code 换取为 access_token。只保存在 localStorage,获取成功后清除。不通过接口,不会上传到云端。可查阅源码验证,无安全风险。
  • 点击按钮,便可完成 access_token 获取,将获取后的 「access_token」 与 「refresh_token」保存至服务器。便可永久刷新,正常调用接口。

项目地址

本地部署生成器

  • 若不放心工具的使用,可下载 node 后端脚本,启动服务器完成该过程
  • 【第零步】下载脚本,并填入「API Key」「Secret Key」
  • 【第一步】执行node index.js,启动脚本
  • 【第二步】将本地 URL http://127.0.0.1:10005/填入「安全设置」中
  • 【第三步】在浏览器中方式http://127.0.0.1:10005/getCode,便可获取 access_token

接口调试官方地址

  • access_token 获取成功后,可经过该工具,测试 access_token 的有效性,并验证接口调用结果。

完结撒花,感谢阅读。

相关文章
相关标签/搜索