如何在Rails中生成正确的Oauth2请求?

时间:2018-04-19 17:27:15

标签: ruby-on-rails oauth-2.0 clio-api

我正在使用Ruby on Rails为Clio app使用Oauth2获取令牌。所以,我安装以下gem:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:listfooter="@layout/item_footer"
    tools:listheader="@layout/item_header"
    tools:listitem="@layout/item" />

这是我的代码:

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 的位置。并且是当用户在他的clio帐户中登录时clio应用程序发送的代码。 但是redirect_uri URL不存在。但是,我创建了它,它唯一能做的就是获取代码参数并将其返回。

但是,它不起作用。根据文档,我可以设置code的默认URL,但它也不起作用。我总是有这个错误:

https://app.clio.com/oauth/approval

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

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

2 个答案:

答案 0 :(得分:0)

看起来它应该工作readin其他线程。将端口添加到您的calback url或者您的应用正在运行的端口 http://127.0.0.1:3000/approval

答案 1 :(得分:0)

redirect_uri我需要生成code变量的网址。因此,如果http://127.0.0.1/approval存在并且可以通过互联网访问但不能生成代码,那么它就无法正常工作。但是,如果我输入生成代码的正确网址,那么它就能正常运行。

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