如何解决Etsy oauth 和获取信息
我正在尝试使用 etsy API 并使用 oauth gem 进行验证。通过在第一个请求 url 中执行此操作,我成功获得了一个成功的令牌:
scopes = ["email_r","feedback_r","listings_r","transactions_r"]
oauth_consumer = OAuth::Consumer.new(Rails.application.secrets.etsy_api_key,Rails.application.secrets.etsy_api_secret,site: "https://openapi.etsy.com/v2"
)
oauth_consumer.options[:request_token_path] = "/oauth/request_token?scope=#{scopes.join('%20')}"
request_token = oauth_consumer.get_request_token(oauth_callback: new_etsy_authentication_url)
redirect_to request_token.params[:login_url]
然后用户通过 etsy 验证页面和回调 url 我有以下内容:
current_user.update(etsy_auth: {
oauth_token: params["oauth_token"],oauth_verifier: params["oauth_verifier"],oauth_created_at: Time.current.to_i
})
我成功保存 etsy oauth_token
和 oauth_verifier
的地方。
问题从那之后开始。我已经尝试了很多事情来向用户提出请求,但我总是得到 oauth_token=rejected。这是我迄今为止所做的示例:
oauth_consumer = OAuth::Consumer.new(Rails.application.secrets.etsy_api_key,site: "https://openapi.etsy.com/v2")
access_token = OAuth::AccessToken.new(oauth_consumer,oauth_token: current_user.etsy_auth["oauth_token"],oauth_secret: current_user.etsy_auth["oauth_verifier"])
access_token.request(:get,"/users/__SELF__")
在此之前我是否应该再提出一个请求,以获得另一个临时 oauth_token 和 oauth_secret?
我试过这样做:
request_token = oauth_consumer.get_request_token
并且我得到了一个临时的 oauth_token
和 oauth_token_secret
以及 oauth_consumer_key
(我不确定应该如何使用)。我得到了临时令牌并尝试了许多组合但没有取得太大成功,我总是收到 oauth_token=rejected 。我还没有弄清楚我是否应该以及在哪里使用 oauth_consumer_key
,如果 oauth_verifier
实际上是 oauth_secret。
我错过了什么?任何帮助表示赞赏。
解决方法
我终于找到了需要做的事情。在向 Etsy 发出初始请求后,我必须存储 oauth_token
和 oauth_secret
。然后 Etsy 也返回 oauth_verifier
。
为了在此之后获取和执行每个请求,您需要将所有三个请求都发送到工作中。