百度統計 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 的有效性,並驗證接口調用結果。

完結撒花,感謝閱讀。

相關文章
相關標籤/搜索