无法使用 HTTParty 将 header 发送到 vimeo
Can not send header to vimeo using HTTParty
我想在我的 rails 应用程序中从 vimeo api 获取未经身份验证的访问令牌。但是 post 请求在 API
的响应后使用 HTTParty gem returns 发出
{"error"=>"You must provide a valid authenticated access token."}
发送请求的代码是
header = "basic " + Base64.encode64("****07974be" + ":" + "****ygYBI7I")
token = HTTParty.post("https://api.vimeo.com/oauth/authorize/client",
:body => {:grant_type => 'client_credentials'},
:header => {'Authorization' => header}
)
json=JSON.parse(token)
我已检查凭据是否正确,还尝试将 :header 替换为 :headers,以及在 header 哈希中使用字符串而不是符号的各种组合。但是 none 有效。
但是,通过 Postman 使用相同的凭证调用相同的 URL 是成功的。
Edit 正如答案中提到的,我们需要在拨打电话时使用 headers(复数)。但是,我已经尝试过了,但问题仍然存在。使用 basic_auth 而不是发送 headers 似乎可行,但我不明白为什么通过 HTTParty 发送 headers 不起作用,但类似的调用正在通过 Postman 进行。
:headers 选项肯定是复数,但是既然你使用的是basic auth,你也可以使用HTTParty的basic auth选项。所以你的请求会变成:
username = "YOUR-USER-HERE"
password = "YOUR-PASSWORD-HERE"
token = HTTParty.post("https://api.vimeo.com/oauth/authorize/client",
body: {:grant_type => 'client_credentials'},
basic_auth: { username: username, password: password }
)
使用您的信誉(您是要 post 真正的信誉吗?)我得到了
{"access_token"=>"REDACTED", "token_type"=>"bearer", "scope"=>"public", "app"=>{"name"=>"Fable", "uri"=>"/apps/REDACTED"}}
我想在我的 rails 应用程序中从 vimeo api 获取未经身份验证的访问令牌。但是 post 请求在 API
的响应后使用 HTTParty gem returns 发出{"error"=>"You must provide a valid authenticated access token."}
发送请求的代码是
header = "basic " + Base64.encode64("****07974be" + ":" + "****ygYBI7I")
token = HTTParty.post("https://api.vimeo.com/oauth/authorize/client",
:body => {:grant_type => 'client_credentials'},
:header => {'Authorization' => header}
)
json=JSON.parse(token)
我已检查凭据是否正确,还尝试将 :header 替换为 :headers,以及在 header 哈希中使用字符串而不是符号的各种组合。但是 none 有效。
但是,通过 Postman 使用相同的凭证调用相同的 URL 是成功的。
Edit 正如答案中提到的,我们需要在拨打电话时使用 headers(复数)。但是,我已经尝试过了,但问题仍然存在。使用 basic_auth 而不是发送 headers 似乎可行,但我不明白为什么通过 HTTParty 发送 headers 不起作用,但类似的调用正在通过 Postman 进行。
:headers 选项肯定是复数,但是既然你使用的是basic auth,你也可以使用HTTParty的basic auth选项。所以你的请求会变成:
username = "YOUR-USER-HERE"
password = "YOUR-PASSWORD-HERE"
token = HTTParty.post("https://api.vimeo.com/oauth/authorize/client",
body: {:grant_type => 'client_credentials'},
basic_auth: { username: username, password: password }
)
使用您的信誉(您是要 post 真正的信誉吗?)我得到了
{"access_token"=>"REDACTED", "token_type"=>"bearer", "scope"=>"public", "app"=>{"name"=>"Fable", "uri"=>"/apps/REDACTED"}}