我已经开始构建一个小应用程序并使用Omniauth和omniauth-twitter宝石。
Everyhting正常运行,直到twitters点击回调网址,然后我收到错误回复并发送错误auth/failure?message=session_expired&strategy=twitter
。
到目前为止,这是我的代码:
class Admin < Sinatra::Base
register Sinatra::Namespace
enable :sessions
use OmniAuth::Builder do
provider :twitter, 'Cient_ID', 'Client_secret'
end
namespace '/admin' do
get do
erb :index
end
get '/login/?' do
redirect '/auth/twitter'
end
end
get '/auth/twitter/callback' do
"You are now logged in"
end
end
当我转到/admin/login
时,我会重定向到Twitter,要求我授权该应用,当我点击“允许”时,它会重定向我,但我只是一遍又一遍地被发送到同一个故障屏幕。
答案 0 :(得分:1)
我已经在我的案例中弄明白了。我使用Pow作为我的Web服务器,在我的项目文件夹中有一个名为'tmp'的文件夹。您可以通过添加名为“always_restart”的文件告诉POW在每个请求上重新启动服务器。服务器在每个请求上重新启动的事实意味着会话令牌变得无效。通过删除此文件,我得到了它的工作。