我正在使用 Rails + Garb Gem (Sija Branch) + omniauth-google-oauth2 Gem,我可以成功地使用 Google Analytics API 进行身份验证,并提取我们的应用在使用用户登录时生成的数据,例如:
Garb::Session.login('USERNAME', '<PASSWORD>')
然后我可以使用 Garb 连接到我想要的分析配置文件并从中提取数据并在网页上显示一些图表。这一切都很好。
但是,我想使用 oAuth2 通过 Analytics 进行身份验证,这就是为什么我必须从 Github 安装 Garb Gem 的 Sija 分支(它支持 oAuth2),并且我还安装了 omniauth-google-oauth2 Gem。现在理论上我应该能够使用以下代码进行身份验证:
Garb::Session.access_token = access_token # an instance of OAuth2::Client
正是在这一点上,它对我来说有点朦胧,我将非常感谢一些指导。这是我已经走了多远:
1)我在Google API 控制台中创建了一个项目,并在Services 下打开了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'
})
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 应用程序使用用户登录身份验证可以正常工作。Web 应用程序所做的只是通过分析进行身份验证、提取一些数据并绘制图表。但我坚持将其转换为 oAuth2,因为我只是不知道如何获取 Garb Gem 正在寻找的访问令牌。我还应该注意,这不是一个有多个用户身份验证的公共网站,这是一个连接到我们自己的分析数据的 CMS 网站。
我已经看到了这方面的一些部分片段,但不是一个完全解释或工作的例子。对于这个问题,我非常感谢任何指导和帮助。
提前谢谢了,
JR