2014-06-27 27 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的返回(由刷新令牌生成)的访问令牌。 –

相关问题