2016-02-25 126 views
0

如何訪問omniauth提供商的訪問令牌應該與devise_token_auth寶石和NG-令牌身份驗證與角認證成功後發回?我想存儲此令牌以便將來向omniauth提供者請求更新信息。 Omniauth供應商特別是Strava。我看到devise_token_auth正在創造自己的訪問令牌,但這些都不是用於訪問Strava。即使在閱讀完寶石代碼後,我也不知道即使設計令牌認證從Strava獲取信息。看起來像這應該是一個非常簡單的事情,我不能是唯一一個想要返回此信息的人。提前致謝。如何訪問omniauth提供商的Devise_token_auth訪問令牌?

回答

1

我們已經能夠用大量的實驗摸不着頭腦。 @resouce爲我們做回零了,但是我們確實發現了訪問令牌和所有從omniauth提供程序返回的其它信息,位於request.env['omniauth.auth'],坐落在OmniAuthCallbacks控制器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