【问题标题】:Access AngelList API访问 AngelList API
【发布时间】:2015-11-14 04:52:45
【问题描述】:

我正在尝试为非面向用户的应用访问 AngelList API。我设法做到了through curl,但我想在 Rails 中自动化它。您如何为此目的使用 oAuth 策略?您将访问令牌存储在哪里(没有会话)?

如果有人能给我所需的所有代码(包括控制器和路由),我将不胜感激,这样我就可以使用如下所示的 oAuth strategy 来获取记录,例如从代码中的任何位置的 GET https://api.angel.co/1/startups/1 获取记录。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :angellist, ENV['ANGELLIST_KEY'], ENV['ANGELLIST_SECRET']
end

【问题讨论】:

  • OAuth 用于注册/登录用户,那么由于 RoR 站点是非面向用户的应用程序,因此他们是否通过前端应用程序进行操作?如果是这样,我建议在客户端而不是服务器端进行 oAuth。如果您尝试访问数据库以获取记录而不是授权,您是否尝试过 Angellist API 的 Ruby 包装器?见:github.com/paulsingh/angellist-api
  • 是的,该应用程序不面向用户。但是我如何获得该宝石所需的不记名令牌?我可以通过 curl (angel.co/api/oauth/faq) 手动执行此操作,但我猜这些令牌已过期,所以我必须一直手动执行此操作?
  • OAuth 适用于登录的用户,因此由于非面向用户的应用程序的压力(除非我弄错了),这似乎不是您想要的。相反,您想使用 API 密钥 - github.com/paulsingh/angellist-api。如果您不想要它,您能否提供一些有关您正在尝试做的事情的详细信息(例如:一个用例)。
  • 你说得对。但我认为 AngelList 没有提供除 oAuth 之外的其他身份验证方式:angel.co/api。此外,gem github.com/paulsingh/angellist-api 说您需要一个带有指向此处 self-issued.info/docs/draft-ietf-oauth-v2-bearer.html 的链接的不记名令牌,这似乎只能通过 oAuth 获得,对吗?我不想使用 oAuth,但我看不到其他选项,或者我错过了什么?
  • 您是否按照 angelist-api 上的说明进行操作?配置链接会将您发送到 AngelList 的 API 部分,您可以在其中为您的应用创建令牌。这是一个开源项目,我从 AngelList 中获取数据。 github.com/acpk/startupri 通过我的应用程序的 API 令牌。

标签: ruby-on-rails ruby oauth omniauth


【解决方案1】:

要在您的应用程序中访问 AngelList,您可以:

  1. 使用 AngelList API Ruby Gem

    gem 安装 angellist_api

  2. 如果您还没有注册 AngelList,请访问他们的 API 文档(请参阅 Angel.co/api)。在他们的 API 页面上,您可以通过注册您的应用来创建“应用令牌”。

  3. 使用您的 API 密钥创建一个 RoR 初始化程序文件。我建议使用 Figaro gem 或现在 RoR 的标准 .env 文件来设置您的变量以用于开发、测试、生产和暂存(如果适用)。

奖励:您也可以在不使用 gem 的情况下手动执行此操作,方法是在 AngelList API URL 中创建一个包含您的 API 密钥的 ENV。如果您要调用您提到的记录并可能将它们保存到您的数据库中,您可以使用:

def self.getAngellist
    response = Net::HTTP.get_response(URI.parse(ENV["ANGELIST_API_URL"]))
    data = response.body
    parsed_response = JSON.parse(data)
    parsed_response["startups"].each do |startup|
      if Startup.where(:foreign_id => startup["id"]).blank?
        unless Startup.name == startup["name"]
          e = Startup.new(:foreign_id => startup["id"], :name => startup["name"], :description => HTML_Truncator.truncate(startup["product_desc"], 50), :url => startup["company_url"], :youtube => startup["video_url"], :facebook => startup["facebook_url"], :twitter => startup["twitter_url"], :linkedin => startup["linkedin_url"], :crunchbase => startup["crunchbase_url"], :angellist => startup["angellist_url"])
          e.save
        end
      end
    end
  end

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2020-05-21
    • 2018-08-01
    相关资源
    最近更新 更多