0

我正在使用 Ruby on Rails 获取使用 Oauth2 for Clio应用程序的令牌。因此,我安装了以下 gem:

gem 'oauth2'

这是我的代码:

client = OAuth2::Client.new(CLIENT_KEY_CLIO, CLIENT_SECRET_CLIO, site: SITE)
token = client.auth_code.get_token(code, :redirect_uri => 'http://127.0.0.1/approval')
return token

变量code由前端发送的位置。并且是 Clio 应用程序在用户登录其 Clio 帐户时发送的代码。但是 redirect_uri URL 不存在。但是,我创建了它,它唯一做的就是获取代码参数并返回它。

尽管如此,它还是行不通。根据文档,我可以输入默认 URL,https://app.clio.com/oauth/approval但它也不起作用。我总是有这个错误:

{
  "error": "invalid_grant",
  "error_description": "The provided access grant is invalid, expired, or revoked (e.g. invalid assertion, expired authorization token, bad end-user password credentials, or mismatching authorization code and redirection URI)."
}

我记得这个错误以前发生过。但是当 redirect_uri 值改变时,它就解决了。

redirect_uri 有什么问题?有人可以为我提供 Oauth2 请求的示例吗?

4

2 回答 2

0

redirect_uri我需要生成code变量的 URL。因此,如果http://127.0.0.1/approval存在并且可以通过互联网访问但不生成代码,那么它就不起作用。但是,如果我输入了生成代码的正确 url,那么一切正常。

client = OAuth2::Client.new(CLIENT_KEY_CLIO, CLIENT_SECRET_CLIO, site: SITE)
token = client.auth_code.get_token(code, :redirect_uri => 'http://address_generate_code_from_frontend')
return token
于 2018-04-24T15:58:26.757 回答
0

似乎它应该在其他线程中工作。将端口添加到您的回调 url 或您的应用程序正在运行的端口 http://127.0.0.1:3000/approval

于 2018-04-19T19:10:48.457 回答