首页 > 解决方案 > 从 Slack API 获得响应的正确方法

问题描述

我想从控制台移动这段代码:

curl --data "token=TOKEN_NO&email=USER@EXAMPLE.COM" https://slack.com/api/users.lookupByEmail

到类方法并从 Slack(用户详细信息)获得响应,就像从控制台一样。我试图做这样的事情,但我没有看到任何结果:

require 'net/http'

module Slack
  class GetUserID
    SLACK_API_ENDPOINT = 'https://slack.com/api/users.lookupByEmail'

    def call
      escaped_address = URI.decode_www_form_component(SLACK_API_ENDPOINT)
      uri = URI.parse(escaped_address)
      puts Net::HTTP.post(uri, params)
    end

    private

    def params
      {
        token: 'TOKEN_NO',
        email: 'USER@EXAMPLE.COM'
      }
    end
  end
end

现在我有一个错误:

send_request_with_body': undefined method#Hash:0x00007f9d85093100> 的字节大小(NoMethodError)

我哪里错了?我应该HTTParty改用吗?

标签: rubyslack-api

解决方案


传递给的第二个参数应该是一个字符串,在此处Net::HTTP.post阅读有关方法签名的更多信息。

您需要将params哈希转换为查询字符串格式,如下所示:

token=TOKEN_NO&email=USER@EXAMPLE.COM

推荐阅读