我使用' Elance‘创业板在rails项目中集成elance,然后使用内置的方法进行身份验证和获取访问令牌。
在此库/元素/身份验证。
#!/usr/bin/env ruby
# encoding: utf-8
require 'curb'
require "base64"
require 'uri'
module Elance
class Authentication
@@authorize_url = "https://api.elance.com/api2/oauth/authorize"
@@access_token_url = "https://api.elance.com/api2/oauth/token"
def initialize(client_id, client_secret)
@client_id = client_id
@client_secret = client_secret
@curl_headers = []
@response_code = 0
end
def request_access_code(redirect_url)
@@authorize_url + "?client_id=" + @client_id + "&response_type=code&redirect_uri=" + redirect_url
end
def init_curl(url)
c = Curl::Easy.new( url )
c.set(:ENCODING, 1)
c.set(:SSL_VERIFYPEER, false)
c.set(:CAINFO, "/etc/ssl/certs/ca-certificates.crt")
c
end
def get_access_token(auth_code)
c = self.init_curl( @@access_token_url )
c.headers['Authorization'] = "Basic "+ Base64.encode64(@client_id + ":" + @client_secret)
c.http_post(Curl::PostField.content('code', URI.escape(auth_code)),
Curl::PostField.content('grant_type', 'authorization_code'))
res = c.perform
ap res
res
end
def exec_request(url, access_token)
c = self.init_curl( url )
c.headers['Authorization'] = "Basic "+ access_token
c.perform
c.body_str
end
end
end在上面的文件中,get_access_token方法没有返回令牌,当我注释行时,它会给出错误的未定义的方法"ap“,然后总是返回true。并将参数作为auth_code传递,这是从request_access_code方法得到的。
我使用rails 4.0.4,ruby 2.1.1
所以,我需要一些帮助来做这件事,然后下一步行动。
请让我知道
提前感谢
发布于 2014-04-03 13:27:17
ap方法来自印刷宝石。如果我们查看elance宝石的运行时依赖项,我们会发现没有列出awesome_print,所以当您在Gemfile中包含elance时,它不是自动安装的。但是,它曾经是;elance项目上的此承诺显示了awesome_print作为依赖项被移除的位置。在上面的代码中,在删除依赖项时,它们似乎没有删除所有的awesome_print方法调用。
我会在elance项目上提出一个问题来解决这个问题。同时,如果您不想对违规行进行注释,可以尝试在Gemfile中包含awesome_print gem。
https://stackoverflow.com/questions/22828903
复制相似问题