如何使用Ruby提交此HTTP表单?

时间:2015-01-30 21:08:03

标签: ruby authentication https

LinkedIn的API允许用户将他们的电子邮件和密码提交到如下所示的表单中:

https://www.linkedin.com/uas/oauth2/authorization?client_id=nhrepd2sjd6k&raise_errors=true&redirect_uri=https%3A%2F%2Fwww.treatings.co%2Fv1%2Ftoken_exchanges&response_type=code&scope=r_fullprofile+r_emailaddress&state=JV4qrQfA8p%2BAKtyq1DFgaaXeRZSg50lQrAU%2Fc%2BBSXaU%3D

使用正确的凭据,LinkedIn会使用codestate参数重定向到上述网址中的重定向URI:

https://www.treatings.co/v1/token_exchanges?code=CODE&state=STATE

我有两个问题:

  1. 如何使用Ruby通过电子邮件和密码提交表单的URL?
  2. 我收到回复后,如何在第二个获取网址?
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

Ruby带有Net::HTTPOpenURI。在这两者中,OpenURI更容易使用。

其他宝石也可以做同样的事情,但首先我建议坚持使用OpenURI,直到找到具体的理由去寻找其他地方。

OpenURI的文档有很多例子可以帮助您入门,但基本命令是:

open('http://www.example.com/index.html').read

将以字符串形式返回页面内容。您可以使用包含表单内容的URL替换上面的URL,这将导致服务器以通常返回的内容进行响应。

因为您使用的是HTTPS URL,OpenURI会感知到这一点并自动使用SSL连接。这也包含在文档中。

重定向将由OpenURI自动处理,您可以询问它的登陆URL是什么。此时,您可以使用Ruby的URI类parse URL,使用query提取查询,然后使用decode_www_form干净地检索值。

这里和互联网上有很多例子可以指出你正确的方向。


  

我不确定OpenURI是否支持POST ....

然后有很多宝石支持它,或者下拉一个级别并使用Net :: HTTP。搜索“ruby http客户端”显示了很多。