【问题标题】:How to access Devise_token_auth access token of omniauth provider?如何访问omniauth提供者的Devise_token_auth访问令牌?
【发布时间】:2016-09-22 16:54:31
【问题描述】:
如何使用 devise_token_auth gem 和带有 angular 的 ng-token-auth 成功验证后发送回的omniauth 提供者的访问令牌?我想存储这个令牌,以便将来向omniauth 提供者发出更新信息的请求。 omniauth 提供者特别是 Strava。我看到 devise_token_auth 正在创建自己的访问令牌,但这些不是用于访问 Strava。即使在阅读了 gem 的代码之后,我什至不知道设计令牌身份验证从 Strava 中提取信息的位置。看起来这应该是一件很简单的事情,我不可能是唯一一个希望返回此信息的人。提前致谢。
【问题讨论】:
标签:
angularjs
api
devise
omniauth
access-token
【解决方案1】:
我们已经通过大量实验来解决这个问题。 @resouce 也确实为我们返回 nil,但我们确实找到了来自omniauth 提供程序返回的访问令牌和所有其他信息,位于request.env['omniauth.auth'] 中,位于redirect_callbacks 控制器的redirect_callbacks 操作中。我们还需要设置
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