我正在尝试为TikTok提供的API编写OAuth策略类。 (文档here)
我正在努力通过OAuth2 :: Client类中实现的get_token
方法获取令牌。 API响应不是在此基类中定义的响应(存在带有“数据”的嵌套哈希)
{
"code": 0,
"msg": "",
"data": {
"access_token": "",
"expires_in": 86400,
"refresh_token": "",
"advertiser_id": 0,
"refresh_token_expires_in": 604800,
}
}
所以我尝试如下在自定义策略类中重写get_token
方法。从原始方法复制了大部分内容,并进行了修改,以在JSON对象中寻找data
。
def get_token(params, access_token_opts = {}, access_token_class = OAuth2::AccessToken)
params = Authenticator.new(id, secret, options[:auth_scheme]).apply(params)
opts = {:raise_errors => options[:raise_errors], :parse => params.delete(:parse)}
headers = params.delete(:headers) || {}
if options[:token_method] == :post
opts[:body] = params
opts[:headers] = {'Content-Type' => 'application/x-www-form-urlencoded'}
else
opts[:params] = params
opts[:headers] = {}
end
opts[:headers].merge!(headers)
response = client.request(options[:token_method], token_url, opts)
if options[:raise_errors] && !(response['data'].parsed.is_a?(Hash) && response['data'].parsed['access_token'])
error = Error.new(response)
raise(error)
end
access_token_class.from_hash(self, response['data'].parsed.merge(access_token_opts))
end
现在我看到此异常。有人可以帮我吗?
未初始化的常量OmniAuth :: Strategies :: OAuth2 :: AccessToken
def get_token(params, access_token_opts = {}, access_token_class = OAuth2::AccessToken)
params = Authenticator.new(id, secret, options[:auth_scheme]).apply(params)
opts = {:raise_errors => options[:raise_errors], :parse => params.delete(:parse)}
headers = params.delete(:headers) || {}