我正在使用 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/