gpt4 book ai didi

ruby - 机架 OAuth-2 服务器中的 Web 服务器流

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:21 24 4
gpt4 key购买 nike

我正在尝试将 Rack OAuth-2 server 集成到我的 sinatra 应用程序中,以便在 web-server flow implementation 中使用它,但我无法使其工作:(。我在 oauth Controller 中使用了以下代码

require "rack/oauth2/sinatra"
module RestKit
module Network
class OAuth2 < Sinatra::Base
use Rack::Logger
set :sessions, true
set :show_exceptions, true

ENV["DB"] = "test"
DATABASE = Mongo::Connection.new[ENV["DB"]]

register Rack::OAuth2::Sinatra
oauth.authenticator = lambda do |username, password|
"Batman" if username == "cowbell" && password == "more" end
oauth.host = "localhost"
oauth.database = DATABASE


# 3. Obtaining End-User Authorization

before "/oauth/*" do
halt oauth.deny! if oauth.scope.include?("time-travel") # Only Superman can do that
end

get "/oauth/authorize" do
"client: #{oauth.client.display_name}\nscope: #{oauth.scope.join(", ")}\nauthorization: #{oauth.authorization}"
end

post "/oauth/grant" do
oauth.grant! "Batman"
end

post "/oauth/deny" do
oauth.deny!
end


# 5. Accessing a Protected Resource

before { @user = oauth.identity if oauth.authenticated? }


oauth_required "/user"

get "/user" do
@user
end

get "/list_tokens" do
oauth.list_access_tokens("Batman").map(&:token).join(" ")
end
end
end
end

然后我尝试使用 curl 从终端获取授权码:

curl -i http://localhost:4567/oauth/authorize   -F response_type=code   -F client_id=[the ID]   -F client_secret=[the secret] -F redirect_uri=http://localhost:4567/oauth/showcode

只是我得到了回应:

HTTP/1.1 400 Bad Request

内容类型:文本/纯文本内容长度:20连接:保持事件状态服务器:thin 1.2.11代号Bat-Shit Crazy

缺少重定向 URL

你知道我做错了什么吗?谢谢!

最佳答案

您的 curl 请求的结尾是:

-F redirect_uri=http://localhost:4567/oauth/showcode

但是你还没有在上面的代码中定义那个路由,即 where is:

get "/oauth/showcode" do

?这就是错误是“缺少重定向 URL”的原因。

关于ruby - 机架 OAuth-2 服务器中的 Web 服务器流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6933137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com