首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成Rails 4、timekit api、rest-client和Devise

集成Rails 4、timekit api、rest-client和Devise
EN

Stack Overflow用户
提问于 2016-01-30 17:03:39
回答 2查看 405关注 0票数 1

我是一个新手Rails 4开发人员,需要帮助我使用rest客户端向我的简单应用程序添加API。为了简化起见,我将只询问API的身份验证系统。

我有一个简单的应用程序,它使用Devise进行身份验证。我希望每一个创建一个帐户的用户都有一个日程安排和预订的目的。为了实现这一点,我使用了一个名为timekit (http://timekit.io/)的API。他们的身份验证系统响应下面的cURL代码示例:

代码语言:javascript
复制
curl -X POST \ 
   -H 'Timekit-App: docs' \ 
   -d '{
        "email": "doc.brown@timekit.io",
        "password": "DeLorean"
       }' \
  https://api.timekit.io/v2/auth

然后返回以下JSON:

代码语言:javascript
复制
{
"data": {
    "activated": true,
    "email": "doc.brown@timekit.io",
    "first_name": "Dr. Emmett",
    "img": "http://www.gravatar.com/avatar/7a613e5348d63476276935025",
    "last_name": "Brown",
    "last_sync": null,
    "name": "Dr. Emmett Brown",
    "timezone": "America/Los_Angeles",
    "token": "UZpl3v3PTP1PRwqIrU0DSVpbJkNKl5gN",
    "token_generated_at": null,
    "api_token": "FluxCapacitator", // note that this is usually a randomized string and not an actual word
        }
}

因此,现在我的问题如下: 1)在Rails框架中,我要在哪里实现这一点? 2)如何使用rest客户机而不是cURL来实现? 3)如何将其与设计集成?4)有哪些好的资源可以增强我自己对这里实际工作的理解?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-30 19:53:29

看到你使用Timekit真是太棒了(我是核心开发人员之一) :)

我们目前还没有ruby gem,我也不是Ruby开发人员,但是下面是一个关于如何使用HTTParty库实现这一目标的快速代码示例:

代码语言:javascript
复制
# Global configs for "admin" user
TK_ADMIN_USER = 'my-email@gmail.com'
TK_ADMIN_TOKEN = '12345ABCD'

# Example usage:
# timekit = Timekit.new(TK_ADMIN_USER, TK_ADMIN_TOKEN)
# tk_user = timekit.create_user(account)
# someInternalUser.update(tk_token: tk_user.token)

class Timekit
  include HTTParty
  base_uri 'https://api.timekit.io'
  headers 'Timekit-App' => 'your-app-name'

  def initialize(user, password)
    @auth = {username: user, password: password}
  end

  def create_user(account)
    options = {
      body: {
        "email" => account.email,
        "first_name" => account.first_name,
        "last_name" => account.last_name,
        "timezone" => "America/Los_Angeles"
      }.to_json,
      basic_auth: @auth,
    }
    self.class.post('/v2/users/', options)
  end

  def create_calendar(account)
    options = {
      body: {
        name: "Bookings",
        description: "Hold bookings for clients."
      }.to_json,
      basic_auth: @auth
    }
    self.class.post('/v2/calendars', options)
  end
end

https://gist.github.com/laander/83cb7f5dde1f933173c7

通常,我们的想法是通过我们的API创建一个用户(您可以在用户登录时透明地创建用户),然后保存API返回的API令牌。之后,您可以执行模拟用户的API调用(获取日历、创建事件、查询可用性等)。

如果您需要更多的手动帮助,请在timekit.io上的聊天中给我们写信!

票数 2
EN

Stack Overflow用户

发布于 2016-01-30 18:05:55

您可以考虑创建一个小型库,以便在项目的/lib目录中包装与Timekit wrap的交互。我没有看到这个web的创业板,所以您可以考虑将这个逻辑提取成一个,这样社区就可以从中受益。

休息-客户 gem看起来非常容易使用:

代码语言:javascript
复制
 auth_hash = {
  "email" => "doc.brown@timekit.io",
  "password" => "DeLorean"
 }
 RestClient.post "https://api.timekit.io/v2/auth", auth_hash.to_json, content_type: :json, accept: :json

如果要为每个用户创建一个新的Timekit帐户,可以考虑将凭据添加到User模型或存储凭据的其他相关模型中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35104489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档