我正在使用Rails + Garb Gem(Sija分支)+ omniauth-google-oauth2 Gem和我可以使用Google Analytics API成功进行身份验证,并提取我们的应用在使用时生成的数据用户登录,例如:无法获取谷歌分析API的oAuth2访问令牌
Garb::Session.login('USERNAME', '<PASSWORD>')
我就可以使用装束连接到分析简介欲,并从中提取数据,并在网页上显示一些图表。这一切工作正常。
但是,我想使用oAuth2来与Analytics进行身份验证,这就是为什么我必须从Github安装Garb Gem的Sija分支(它支持oAuth2)并且我还安装了omniauth-google-oauth2 Gem。现在,在理论上我应该可以使用下面的代码进行验证:
Garb::Session.access_token = access_token # an instance of OAuth2::Client
这是在这一点上,它变得有点朦胧了我,我将不胜感激一些指导。这里有多远,我已经得到了:
1)我在谷歌API控制台创建项目和服务
2)下开启Analytics(分析)API这为我提供了一个客户端ID和客户端密钥
3 )我碰到这个代码,我可以与ID和秘密上面填充传来:
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'
})
4)再有就是代码的下位:
response = OAuth2::AccessToken.new(
client,
STORED_TOKEN, {
refresh_token: STORED_REFRESH_TOKEN,
expires_at: STORED_EXPIRES_AT
})
5),然后在与理论连接:
Garb::Session.access_token = response
我是我没有在点令牌信息(4)上面的问题。在我看来,使用oAuth2我需要做一次“握手”并打印出返回标记值?也许通过Rails代码打印返回的值,然后将标记值粘贴到Rails应用程序中的常量中,以便我可以在上面的代码中使用它们?我真的很困惑。正如我前面提到的,使用用户登录身份验证,Web应用程序可以正常工作。所有网络应用程序正在执行分析验证,拉下一些数据并绘制图表。但我坚持把它转换为oAuth2作为我只是不知道如何获得Garb Gem正在寻找的访问令牌。我还应该注意到,这不是一个有多个用户认证的公共网站,这是一个连接到我们自己的Google Analytics数据的CMS网站。
我已经看到了这方面的一些部分片段,但没有一个完整解释或工作的例子。我真的很感谢任何指导和帮助解决这个问题。
很多感谢,
JR
非常感谢您的详细解答。实际上,我使用相同的Rails,但使用cURL来获取访问/刷新令牌。我直到现在才被允许回答我自己的问题,所以我会在下面给出答案,并将其标记为正确。再次欢呼! – 2013-05-13 08:24:43
我做了同样的,我得到这个错误*** OAuth2 ::错误异常:<?xml version =“1.0”encoding =“UTF-8”?> GData Permission Permission internalReason > –
RailsEnthusiast
2013-05-29 10:44:50
insufficientPermissions