如何使用带有角度的devise_token_auth gem和ng-token-auth成功验证后应该发送回omniauth提供程序的访问令牌?我想存储此令牌以便将来向omniauth提供程序请求更新信息。 omniauth提供者特别是Strava。我看到devise_token_auth正在创建自己的访问令牌,但这些并不是为了访问Strava。即使在读完gem的代码之后,我甚至不知道devise token auth从Strava中获取信息的位置。看起来这应该是一件非常简单的事情,我不可能是唯一一个想要返回此信息的人。提前谢谢。
答案 0 :(得分:1)
我们已经通过大量实验来解决这个问题。 @resouce
确实为我们返回了nil,但我们确实找到了位于request.env['omniauth.auth']
位于redirect_callbacks
行动的omniauth提供程序返回的访问令牌和所有其他信息。 OmniAuthCallbacks
控制器。我们还需要设置
mount_devise_token_auth_for 'User', at: 'auth', controllers: { omniauth_callbacks: 'registrations'}
routes.rb
中,并创建我们命名为RegistrationsController的自定义控制器。
所以我们的块看起来像这样
class RegistrationsController < DeviseTokenAuth::OmniauthCallbacksController
def redirect_callbacks
super
puts "REDIRECT:"
puts request.env['omniauth.params']
puts "AUTH INFO"
puts request.env['omniauth.auth'].credentials['token']
puts "REDIRECT END"
# create the user_strava_key and save it.
@strava_token = request.env['omniauth.auth'].credentials['token']
UserStravaKey.create(key_secret: @strava_token)
end
end