ruby - 如何在没有服务器的情况下完成此 OAuth 过程?

标签 ruby box-api

我正在使用 ruby​​-box gem 连接到 box.com,它声明使用此代码获取访问 token :

session = RubyBox::Session.new({
  client_id: $boxClientID,
  client_secret: $boxClientSecret
})

authorize_url = session.authorize_url('https://redirect-url-in-app-settings')

@token = session.get_access_token('code-returned-to-redirect_url')

问题是我没有要重定向到的 url,而且我也没有使用 GUI,所以我无法从那里获取代码。我该怎么办?

最佳答案

Ben,我是 ruby​​-box Gem 的开发人员之一。您可以执行以下操作:

  • 在 app.box.com 设置您的应用程序以使用此回调

https://localhost/oauth2callback

  • 在 IRB 中,使用相同的回调生成授权 url:

    session = RubyBox::Session.new({
      client_id: $boxClientID,
      client_secret: $boxClientSecret
    })

    authorize_url = session.authorize_url('https://localhost/oauth2callback')

  • 将此 URL 粘贴到网络浏览器中。
  • 一旦您通过 Box 进行身份验证,您最终将进入一个回调页面,其 URL 如下所示:

https://localhost/oauth2callback?state=&code=OQpfImZH35Ab9weUy61kthIvqZ2Dyz6

  • 复制代码的值。
  • 回到 irb,运行这个命令:

token = session.get_access_token('OQpfImZH35Ab9weUy61kthIvqZ2Dyz6')
access_token = token.token
refresh_token = token.refresh_token

  • 将访问 token 和刷新 token 都存储在数据库中(或餐巾纸上,或您认为合适的任何地方)。
  • 从现在开始,您可以像这样实例化一个 session :

    session = RubyBox::Session.new({
      access_token: $storedAccessTokenValue,
      refresh_token: $storedRefreshTokenValue,
      client_id: $boxClientID,
      client_secret: $boxClientSecret
    })

    client = RubyBox::Client.new(session)

一个用户只需要获取一次access_token和refresh_token。

关于ruby - 如何在没有服务器的情况下完成此 OAuth 过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034936/

相关文章:

ruby - 如何在 Ruby 中实现凯撒密码?

mysql - DatabaseCleaner 不适用于 Capybara 自动化测试

ruby-on-rails - rails : #inspect not displaying attribute

box-api - OAuth2 刷新 token 仅在 14 天内有效

android - 如何在 Box Android API 中获取特定的 mp3 文件路径?

java - Box API 更新电子邮件别名问题

ruby-on-rails - 如何测试 Devise 用户是使用 RSpec 使用正确的密码创建的