如何访问omniauth提供程序的Devise_token_auth访问令牌?

时间:2016-02-25 22:44:10

标签: angularjs api devise omniauth access-token

如何使用带有角度的devise_token_auth gem和ng-token-auth成功验证后应该发送回omniauth提供程序的访问令牌?我想存储此令牌以便将来向omniauth提供程序请求更新信息。 omn​​iauth提供者特别是Strava。我看到devise_token_auth正在创建自己的访问令牌,但这些并不是为了访问Strava。即使在读完gem的代码之后,我甚至不知道devise token auth从Strava中获取信息的位置。看起来这应该是一件非常简单的事情,我不可能是唯一一个想要返回此信息的人。提前谢谢。

1 个答案:

答案 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