[英]How to authorize with the Google API Ruby client?
我想通过Google API从我的Google Analytics(分析)帐户中获取数据,并在我的一个仪表板上显示一些值。 如果可能,我想为此使用Ruby。
google-api-ruby-client似乎是一个不错的起点,我什至找到了一些有用的示例代码 ,这些代码对您有很大帮助,但是我无法正确授权我的请求。
在相同的示例代码中,有一部分显示了如何执行此操作,但是我不确定从哪里获取必要的密钥。
到目前为止,我已经做过的事情:
基于向导,我创建并下载了一个服务帐户密钥,如下所示:
{ "type": "service_account", "project_id": "xxx" "provate_key_id": "xxx", "private_key": "xxx", "client_email": "xxx", "client_id": "xxx", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "xxx" }
但是,我不知道如何使用它。 也许我犯了一个错误,我需要从Google那里获取其他类型的密钥吗?
由于Google API的性质和企业安全性要求,这比普通的RESTful硅谷API稍微复杂一些。 我需要在过去的项目中执行此操作,我认为这会有所帮助。
首先,为了简化查询所需数据的过程,我使用了Legato ,它自称为“ Google Analytics Core Reporting and Management API的Ruby客户端”。
为了使Legato正常工作,您需要从Google获取OAuth令牌,该令牌会在一段时间后失效。
class AuthToken
def self.retrieve
new.retrieve
end
def retrieve(expires_in = 1.hour)
client = Google::APIClient.new(application_name: 'YOUR APP NAME', application_version: '0.1')
client.authorization = service_account('https://www.googleapis.com/auth/analytics.readonly', private_key).authorize
OAuth2::AccessToken.new(oauth_client, client.authorization.access_token, expires_in: expires_in )
end
private
def oauth_client
OAuth2::Client.new('', '', {
authorize_url: authorize_url,
token_url: token_url
})
end
def service_account(scope, key)
Google::APIClient::JWTAsserter.new(ENV['GOOGLE_SERVICE_EMAIL'], scope, key)
end
def private_key
@private_key ||= Google::APIClient::PKCS12.load_key(
ENV['GOOGLE_PRIVATE_KEY_PATH'],
ENV['GOOGLE_PRIVATE_KEY_PASSPHRASE']
)
end
def authorize_url
'https://accounts.google.com/o/oauth2/auth'
end
def token_url
'https://accounts.google.com/o/oauth2/token'
end
end
假设您具有三个与Google提供的身份验证数据相对应的环境变量:
.p12
文件。 您可以像以下这样用连奏来使用该服务:
class ArticlePageviews
extend Legato::Model
metrics :pageviews
dimensions :page_path
filter(:only_articles) { contains :page_path, '/articles/' }
end
ga_user = Legato::User.new(AuthToken.retrieve)
ga_profile = ga_user.profiles.first
ArticlePageviews.only_articles.results(ga_profile)
祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.