Lum*_*sss 8 ruby ruby-on-rails oauth heroku omniauth
我正在开发一个使用这个gem使用Bungie OAuth进行身份验证的rails应用程序.我在initializers/devise.rb中的配置如下:
config.omniauth :bungie, ENV['CLIENT_ID'], ENV['CLIENT_SECRET'], ENV['X_API_KEY'], ENV['REDIRECT_URL']
Run Code Online (Sandbox Code Playgroud)
Bungie的开发人员门户需要使用HTTPS的重定向URL,因此我将我的应用程序推送到Heroku并使用重定向强制身份验证返回localhost进行测试.使用这种方法,一切正常.但是,当我将应用程序推向生产时,Bungie对我的应用程序的响应失败了OAuth2::Error, invalid_request: redirect_uri does not match application configuration.redirect_url在我的应用程序的env变量和Bungie的开发门户中完全相同.
看到它在生产中,我只能看到我能看到的日志.我已经尝试在浏览器中的开发工具的网络选项卡中跟踪请求,但一切看起来都应该如此.
我曾尝试与bungie-oauth2 gem的开发人员合作,但我们未能达成解决方案(他的prod应用程序可以正常使用它).
在Heroku中是否有任何可能导致redirect_url不同的东西?
根据要求,这是我的omniauth路线:
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
Run Code Online (Sandbox Code Playgroud)
输出来自rake routes:
users_sign_out GET /users/sign_out(.:format) devise/sessions#destroy
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_bungie_omniauth_authorize GET|POST /users/auth/bungie(.:format) users/omniauth_callbacks#passthru
user_bungie_omniauth_callback GET|POST /users/auth/bungie/callback(.:format) users/omniauth_callbacks#bungie
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
POST /users/password(.:format) devise/passwords#create
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
POST /users(.:format) devise/registrations#create
Run Code Online (Sandbox Code Playgroud)
和我的控制器:
def bungie
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
@user.remember_me = true
sign_in_and_redirect @user, :event => :authentication
else
session["devise.bungie_data"] = request.env["omniauth.auth"]
redirect_to root_path
end
end
Run Code Online (Sandbox Code Playgroud)
完整的源代码可以在https://github.com/destiny-aviato/destinder找到.
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |