【问题标题】:How do I submit this HTTPs form with Ruby?如何使用 Ruby 提交此 HTTPs 表单?
【发布时间】:2015-01-30 21:08:03
【问题描述】:

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 参数重定向到上述 URL 中的重定向 URI:

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

我有两个问题:

  1. 如何使用 Ruby 提交带有电子邮件和密码的表单 URL?
  2. 一旦我得到响应,我如何获得第二个URL?

谢谢!

【问题讨论】:

    标签: ruby authentication https


    【解决方案1】:

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

    还有其他 gems 可以做同样的事情,但首先我建议您坚持使用 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....

    然后有很多 gem 支持它,或者下拉一个级别并使用 Net::HTTP。搜索“ruby http 客户端”会发现很多信息。

    【讨论】:

    • 它不是在阅读给我带来困难的页面 - 它是在提交表单并获取重定向 url。将不胜感激你有任何想法
    • 我建议您阅读文档并查看 IRB 中的 OpenURI。不难弄清楚。
    • 我不确定 OpenURI 是否支持 POST。 stackoverflow.com/questions/242602/…
    • 您在问题中的哪个位置指定了该要求?您显示的 URL 通常是 GET 请求,因为参数在 URL 中。
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 2013-06-21
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多