2014-06-27 90 views
8

我一直在試圖實現一個應用程序,該應用程序需要用戶授予對Google Analytics的訪問權限。我一直在關注這個教程:如何在使用Google API JS客戶端時獲取刷新令牌

https://developers.google.com/analytics/solutions/articles/hello-analytics-api

而在其他一些地方存在對AngularJs代碼使用相同的腦功能

https://gist.github.com/jakemmarsh/5809963

我的問題是,在auth工作得很好,但它不返回一個refresh_token。 它永遠不會返回一個refresh_token。我嘗試了所有可能的在網上。 1.第一次, 2.使用提示=強制等等等等。但似乎沒有任何返回refresh_token。我猜這部分被客戶端或別的東西跳過了。

我需要知道如何獲得refresh_token當用戶第一次授予訪問權限,以便我可以保存它。

+3

嗨,我目前有相同的問題使用谷歌日曆API。你能解決這個問題嗎? –

回答

18

它不會按設計返回刷新令牌。您提到的教程和代碼使用的是Google APIs Client Library for JavaScript。該庫使用OAuth 2.0 client-side flow來提出需要授權的請求。

作爲The OAuth 2.0 Authorization Framework says

OAuth 2.0用戶端側流(AKA隱式流量)用於獲得訪問令牌(它不支持發行刷新令牌)和已知的用於操作公共客戶機進行了優化一個特定的重定向URI。這些客戶端通常使用JavaScript等腳本語言在瀏覽器中實現。

授權服務器絕不能發出刷新令牌。

事實上,授權碼流是發出刷新令牌只有一個,和谷歌支持這些場景中,這種流程:Web服務器應用程序,安裝的應用程序,並在有限的輸入設備的應用,而不是客戶端 - (JavaScript)應用程序或服務帳戶。 Get more details from here

所以你不會以這種方式獲得刷新令牌。

+0

如果我們想要使用由JavaScript客戶端API中的服務器端(PHP)登錄生成的刷新訪問令牌來進行YouTube視頻上傳,那麼該功能是否有效...? – usama

+0

@usama您需要使用來自YouTube的返回(由刷新令牌生成)的訪問令牌。 –

相關問題