Rails,Devise和Doorkeeper ...尝试测试密码授予和获取错误:URI::InvalidURIError: query conflicts with opaque
有任何想法吗?
更新:我创建了第二个能够获得令牌的rails应用程序..所以也许是关于native_redirect_uri的东西
Doorkeeper.configure do
orm :active_record
resource_owner_authenticator do
# current_user || warden.authenticate!(:scope => :user)
end
resource_owner_from_credentials do |routes|
user = User.find_for_database_authentication(email: params[:username])
user if user && user.valid_password?(params[:password])
end
reuse_access_token
use_refresh_token
native_redirect_uri 'urn:ietf:wg:oauth:2.0:oob'
grant_flows %w(password)
skip_authorization do |resource_owner, client|
true
end
end
使用oauth2我创建一个应用程序,给它一个随机名称,并为网站uri:urn:ietf:wg:oauth:2.0:oob
然后使用用户的凭据运行以下命令:
client = OAuth2::Client.new('caa5ia541111698b34e66056e18b9afd6cb90c0d200d5dac99584da5a6b83b411', 'e45c78992a9eeb609b72cf5b56aea8dd999ec7dc9594a4211b8265f525a75870', :site => "urn:ietf:wg:oauth:2.0:oob")
access_token = client.password.get_token('test@test.com', 'realpassword')
我大致遵循此示例here
答案 0 :(得分:18)
我自己遇到了这个错误并且非常困惑,因为这是一个非常神秘的错误concerning internals of the URI library。我的问题是我加入的第一个字符串没有指定协议(https://
或http://
)。添加一个解决了我的问题!
答案 1 :(得分:0)
对于任何人的价值,我认为我误用了“urn:ietf:wg:oauth:2.0:oob”。我设置了一个单独的rails应用程序作为客户端,一切都按预期工作。