【问题标题】:Using scala to access google API, front end in Ruby on Rails使用 scala 访问 google API,Ruby on Rails 中的前端
【发布时间】:2015-05-29 21:46:45
【问题描述】:

所以我的主要应用程序是用 Ruby/Rails 编写的,这就是初步的 oauth2 操作发生的地方。目前,我存储来自该初始交互的电子邮件和刷新令牌,现在想使用 Scala 脚本在后台使用用户凭据从 api 检索数据。 (API 编号的意义所在?)

从 google java api 客户端示例页面:https://github.com/google/google-api-java-client-samples 进行了许多示例之后,我发现他们希望我通过打开一个新选项卡并物理登录来重新验证用户。因为我已经验证了他们,有没有办法让我简单地不断检索数据而无需他们再次登录,因为这个脚本应该在后台运行?

【问题讨论】:

  • 如果您有访问/刷新令牌并且用户没有撤​​销访问权限,那么您不需要在后续请求时重新验证它们,除非您将 approval_prompt 设置为 force您对令牌的初始请求。您从 google 看到了哪些具体错误?
  • 我想我不确定为特定用户获取新访问令牌的流程是什么。我有自己的 client_id、client_secret 和他们的 refresh_token。在 scala 中,我使用的是 java-api-client 库,到目前为止,我找不到任何允许我使用此信息访问 API 的示例如您在此处看到的:developers.google.com/admin-sdk/directory/v1/quickstart/java 似乎是唯一的方法访问 API 就是创建凭据,而自动创建凭据需要我打开一个新选项卡并再次进行身份验证?

标签: java ruby-on-rails scala google-api-java-client


【解决方案1】:

使用java-api-client 库刷新访问令牌:

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential

val credential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setClientSecrets(CLIENT_ID, CLIENT_SECRET)
.build()

credential.setRefreshToken(refreshToken) // get token from DB or wherever you have persisted it
credential.refreshToken()
credential.getAccessToken // returns new, refreshed access token

【讨论】:

  • 非常感谢! (对不起,我也没有意识到我是一个“服务器到服务器”或服务客户端),这也让一切变得更加复杂,但这解决了一切!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多