2016-09-14 47 views
1

我正在嘗試使用Google Analytics Reporting API構建儀表板,以便爲我公司的客戶創建報告。Analytics API:自動驗證

問題是我需要使用cronjob創建報告,但這需要驗證。我嘗試以下方法:

1.使用API for web applications

我設法使這項工作,但過程的OAuth2迫使我通過重定向我到谷歌登錄頁面來驗證到谷歌。一旦登錄,令牌被創建並生成我的報告。但我不能找到一種方法,而無需用戶干預,自動認證(即填補谷歌登錄表單)

2.使用API for service accounts

有了這個解決方案,我能不來創建報告手動登錄到Google,這非常棒。但是,此方法要求我將服務帳戶添加到Google Analytics帳戶,方法是將新創建的用戶[email protected]添加到我希望訪問的每個Google Analytics數據視圖中。我無法這樣做,因爲我嘗試訪問的一些視圖是由我公司的客戶管理的,我無法要求他們每個人添加另一個Google Analytics用戶。

我需要能夠使用已配置的用戶電子郵件訪問Google Analytics視圖。我試圖在Service Accounts Manager中添加此地址作爲我的服務帳戶的所有者,但沒有運氣(請參閱以下屏幕截圖)。

Service Accounts Manager

Analytics Administration

有沒有什麼辦法,我可以使用一個靜態令牌的Web應用程序的API(即不必手動登錄到谷歌),或使用服務帳戶的API不必須在每個Google Analytics視圖中添加Google創建的用戶?

我在這裏不知所措,所以任何建議都會有幫助。

回答

2

由於您無法控制所有帳戶,因爲您說過您無法使用服務帳戶。

在那裏你將不得不使用Oauth2。有人必須首次驗證您的應用程序。一旦授予訪問權限,您將首次獲得訪問令牌以訪問API和刷新令牌。如果您存儲此刷新令牌,則可以隨時從您的cron作業中請求新的訪問令牌,以便運行報告。

訣竅是保存與每個用戶帳戶關聯的刷新標記。您的客戶必須驗證應用程序才能授予您訪問權限。您存儲刷新令牌。刷新標記不應該過期(有幾個原因可能會導致)在需要時您將能夠獲得訪問權限。

注意:您也可以在帳戶級別放置服務帳戶電子郵件,以便您訪問所有內容。但是這不會幫助你與你無法訪問的客戶。

更新:

刷新令牌除下不會過期:

  • 刷新令牌不使用6個月也將到期。
  • 用戶可以前往Google帳戶的應用設置,並隨時撤銷訪問權限。

用戶可以重新驗證您的應用程序(相同的客戶端ID)26次,爲您提供26個不同的刷新令牌,第26個刷新令牌將過期後。一個用戶只能擁有26個工作刷新令牌。確保您始終保存最新的刷新令牌。

+0

我會研究一下,謝謝。我有一個問題,即每個Google Analytics媒體資源的特定刷新標記(即,如果我想要檢索20個不同網站的統計信息,則必須創建20個刷新標記),即使這些媒體資源都是在相同的分析中進行管理帳戶(通過「帳戶」,我的意思是我使用OAuth2授權API的電子郵件和密碼)? – roberto06

+0

刷新令牌可讓您訪問經過身份驗證的用戶有權訪問的所有Google Analytics帳戶 – DaImTo

+1

太棒了!我會在接下來的幾天內嘗試,讓你知道它是怎麼回事! – roberto06

0

據我所知,cron作業的預期方法是將API用於服務帳戶,就像您所描述的那樣。但是,這似乎是一種預期的和適當的行爲,您無需事先獲得視圖所有者的授權,只需通過爲您的服務帳戶提供其ID即可訪問隨機視圖。如果沒有此設置,Google Analytics就不會知道您與客戶的關係,因此拒絕訪問數據。

我不確定,如果支持,但您可以嘗試在屬性或Google Analytics帳戶級別添加您的服務帳戶,以便所有連接的視圖都會繼承此設置。

+0

同樣的問題,我有超過200個Google Analytics(分析)帳戶,我無法爲每個帳戶添加用戶(主要是因爲我只對其中一些用戶具有閱讀權限)。 – roberto06