我曾经能够使用我的帐户的登录名和密码查询Google AnalyticsAPI.谷歌现在使用OAuth进行身份验证,这很棒......唯一的问题是我只需要一个访问令牌.我不想让其他用户获取他们的分析数据.
我只是想获取我的数据.有没有办法只为我的应用或分析帐户生成访问令牌?
我知道存在这样的解决方案......例如,Twitter为不需要特定用户登录的应用程序提供了所谓的"单用户oauth".
再一次,我在这里想要完成的是通过API获取我自己的分析数据.
有没有办法正确地做到这一点?
我正在使用Rails + Garb Gem(Sija Branch)+ omniauth-google-oauth2 Gem,我可以使用Google AnalyticsAPI成功验证并提取我们的应用在使用用户登录时生成的数据,例如:
Garb::Session.login('USERNAME', '<PASSWORD>')
Run Code Online (Sandbox Code Playgroud)
然后我可以使用Garb连接到我想要的Analytics Profile并从中提取数据并在网页上显示一些图表.一切正常.
但是,我想使用oAuth2对Analytics进行身份验证,这就是为什么我必须从Github安装Garb Gem的Sija分支(它支持oAuth2),我还安装了omniauth-google-oauth2 Gem.现在理论上我应该能够使用以下代码进行身份验证:
Garb::Session.access_token = access_token # an instance of OAuth2::Client
Run Code Online (Sandbox Code Playgroud)
在这一点上,它对我来说有点模糊,我非常感谢一些指导.这是我走了多远:
1)我在Google API控制台中创建了一个项目,并启用了服务下的Analytics API
2)这为我提供了客户端ID和客户端密钥
3)我遇到了这个代码,我可以用上面的ID和Secret填充:
client = OAuth2::Client.new(
GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET,
{
:site => 'https://accounts.google.com',
:authorize_url => '/o/oauth2/auth',
:token_url => '/o/oauth2/token'
})
Run Code Online (Sandbox Code Playgroud)
4)然后是下一段代码:
response = OAuth2::AccessToken.new(
client,
STORED_TOKEN, {
refresh_token: STORED_REFRESH_TOKEN,
expires_at: STORED_EXPIRES_AT
})
Run Code Online (Sandbox Code Playgroud)
5)然后在理论上连接:
Garb::Session.access_token = response
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我没有上面第(4)点中的令牌信息.在我看来,使用oAuth2我需要进行一次"握手"并打印出返回令牌值?也许通过Rails代码打印返回的值,然后将令牌值粘贴到Rails应用程序中的常量中,以便我可以在上面的代码中使用它们?我真的很困惑.正如我之前提到的,使用用户登录身份验证,Web应用程序正常工作.所有Web应用程序正在进行的是使用分析进行身份验证,下拉一些数据并绘制图表.但是由于我不知道如何获得Garb Gem正在寻找的访问令牌,所以我无法将其转换为oAuth2 .我还应该注意,这不是一个有多个用户身份验证的公共网站,这是一个连接到我们自己的Google Analytics数据的CMS网站.
我已经看到了一些方面的部分片段,但没有完全解释或工作的例子.我真的很感激任何指导和帮助这个问题.
提前谢谢了,
JR
ruby-on-rails google-analytics-api access-token oauth-2.0 garb-gem