Ruby Sinatra Github OAuth问题

Ruby Sinatra Github OAuth问题,ruby,github,oauth,sinatra,Ruby,Github,Oauth,Sinatra,我正在使用gem尝试将githuboauth放入我的Sinatra应用程序中。我使用示例应用程序进行了一段时间的测试,效果良好。我回去尝试让其中一些代码在我的应用程序中运行,尽管大部分代码都运行正常,但GitHub的重定向却没有 有人能推荐一些有帮助的吗 代码如下: class SimpleApp < Sinatra::Base # [...] set :github_options, { :scope => 'user', :secret =

我正在使用gem尝试将githuboauth放入我的Sinatra应用程序中。我使用示例应用程序进行了一段时间的测试,效果良好。我回去尝试让其中一些代码在我的应用程序中运行,尽管大部分代码都运行正常,但GitHub的重定向却没有

有人能推荐一些有帮助的吗

代码如下:

class SimpleApp < Sinatra::Base
  # [...]

  set :github_options, {
    :scope     => 'user',
    :secret    => ENV['GITHUB_CLIENT_SECRET'],
    :client_id => ENV['GITHUB_CLIENT_ID'],
  }
  register Sinatra::Auth::Github

  get '/' do
    erb :index
  end

  get '/login' do
    authenticate!
    "Hello there, #{github_user.login}!"
  end
end
类SimpleApp“用户”, :secret=>ENV['GITHUB\u CLIENT\u secret'], :client_id=>ENV['GITHUB_client_id'], } 注册Sinatra::Auth::Github 获取“/”do 雇员再培训局:索引 结束 获取“/login”do 证明…是真实的 “您好,#{github_user.login}!” 结束 结束
您遇到的问题可能与此相关。这个gem会在每个请求上重新加载整个应用程序,因此在与登录相关的请求中维护OAuth登录会话状态可能会出现问题

使用
rackup
运行应用程序(如示例应用程序),我没有遇到任何问题:

bundle exec rackup -p 3000

您所遇到的问题可能与以下方面有关。这个gem会在每个请求上重新加载整个应用程序,因此在与登录相关的请求中维护OAuth登录会话状态可能会出现问题

使用
rackup
运行应用程序(如示例应用程序),我没有遇到任何问题:

bundle exec rackup -p 3000

嗨,我试过了,结果也一样。是因为我调用
/login
的方式是从
index.erb
中的
href
调用的吗?是因为Github应用程序中的重定向URL设置为
/
@wjordan@zander为了提供一个我或其他人可以复制您的问题,请添加您正在运行的Sinatra源代码的更完整内容,以及您在开发中运行服务器所使用的确切命令。我很好奇如何提供
GITHUB\uuu
环境变量,以及您的测试应用程序与此应用程序之间是否一致。从上面的代码中可以看出,我使用的是来自GITHUB的客户端ID和客户端机密,上面列出的几乎是我所有的,我只是省略了index.erb,因为这只是一个链接到
/login
的href。就服务器而言,我正在运行
bundle exec shotgun-p3000
,重定向链接就是
http://0.0.0.0:3000
,如果我尝试将其设置为
http://0.0.0.0:3000/login
,一个错误显示重定向URI不正确。它通常会发送到Github,但响应链接不会将用户发送回Sinatra应用程序@wjordan。代码在
app.rb
文件中的一个类中,config.ru链接到它,但在一个示例中,它在config.ru@wjordan中工作。您是否尝试在Sinatra应用程序中调用
enable:sessions
,我试着这么做,结果也一样。是因为我调用
/login
的方式是从
index.erb
中的
href
调用的吗?是因为Github应用程序中的重定向URL设置为
/
@wjordan@zander为了提供一个我或其他人可以复制您的问题,请添加您正在运行的Sinatra源代码的更完整内容,以及您在开发中运行服务器所使用的确切命令。我很好奇如何提供
GITHUB\uuu
环境变量,以及您的测试应用程序与此应用程序之间是否一致。从上面的代码中可以看出,我使用的是来自GITHUB的客户端ID和客户端机密,上面列出的几乎是我所有的,我只是省略了index.erb,因为这只是一个链接到
/login
的href。就服务器而言,我正在运行
bundle exec shotgun-p3000
,重定向链接就是
http://0.0.0.0:3000
,如果我尝试将其设置为
http://0.0.0.0:3000/login
,一个错误显示重定向URI不正确。它通常会发送到Github,但响应链接不会将用户发送回Sinatra应用程序@wjordan代码在
app.rb
文件中的一个类中,config.ru链接到它,但在一个示例中,它在config.ru@wjordan中工作,您是否尝试在Sinatra应用程序中调用
enable:sessions