Nimble.com API에 대한 사용자 지정 전략을 만들고 있습니다. OAuth를 사용하는 것처럼 꽤 간단합니다.OmniAuth OAuth2 기반 전략에 대한 토큰 옵션 지정
require 'omniauth-oauth2'
module OmniAuth
module Strategies
class Nimble < OmniAuth::Strategies::OAuth2
option :name, "nimble"
option :client_options, {
:site => "https://api.nimble.com",
:authorize_url => '/oauth/authorize',
:token_url => '/oauth/token'
}
# option :access_token_options, {
# :mode => :query,
# :param_name => :access_token
# }
option :provider_ignores_state, true
uid { raw_info['email'] }
info do
{
'uid' => raw_info['email'],
'name' => raw_info['name'],
'email' => raw_info['email']
}
end
extra do
{ 'raw_info' => raw_info }
end
def raw_info
access_token.options[:mode] = :query
access_token.options[:param_name] = :access_token
@raw_info ||= access_token.get('/api/users/myself/', {:parse => :json}).parsed
end
end
end
end
토큰을 전달할 때 URL에서 access_token 매개 변수를 사용해야합니다. 샘플 에서처럼 raw_info 함수에서 옵션을 직접 지정하면 괜찮습니다.
access_token_options 해시에서이 옵션을 지정하려고 할 때 (주석 섹션과 같이) 매개 변수가 토큰으로 전달되지 않습니다. Ruby에서별로 좋지 않아서 라이브러리 소스에서 OmniAuth OAuth2 하위 클래스의 access_token에 매개 변수를 올바르게 전달하는 방법을 알지 못했습니다.
"올바른 방법"으로 만들고 싶습니다. 따라서 올바른 옵션으로 초기화 된 access_token은 plese 누군가 올바른 방법을 알려줍니다.
감사합니다.