【问题标题】: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 提供者发出更新信息的请求。 omn​​iauth 提供者特别是 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 2013-08-09
      • 2020-06-08
      • 2015-04-16
      • 2018-02-02
      • 1970-01-01
      • 2017-09-15
      相关资源
      最近更新 更多