我是一个新手Rails 4开发人员,需要帮助我使用rest客户端向我的简单应用程序添加API。为了简化起见,我将只询问API的身份验证系统。
我有一个简单的应用程序,它使用Devise进行身份验证。我希望每一个创建一个帐户的用户都有一个日程安排和预订的目的。为了实现这一点,我使用了一个名为timekit (http://timekit.io/)的API。他们的身份验证系统响应下面的cURL代码示例:
curl -X POST \
-H 'Timekit-App: docs' \
-d '{
"email": "doc.brown@timekit.io",
"password": "DeLorean"
}' \
https://api.timekit.io/v2/auth然后返回以下JSON:
{
"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)有哪些好的资源可以增强我自己对这里实际工作的理解?
发布于 2016-01-30 19:53:29
看到你使用Timekit真是太棒了(我是核心开发人员之一) :)
我们目前还没有ruby gem,我也不是Ruby开发人员,但是下面是一个关于如何使用HTTParty库实现这一目标的快速代码示例:
# 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
endhttps://gist.github.com/laander/83cb7f5dde1f933173c7
通常,我们的想法是通过我们的API创建一个用户(您可以在用户登录时透明地创建用户),然后保存API返回的API令牌。之后,您可以执行模拟用户的API调用(获取日历、创建事件、查询可用性等)。
如果您需要更多的手动帮助,请在timekit.io上的聊天中给我们写信!
发布于 2016-01-30 18:05:55
您可以考虑创建一个小型库,以便在项目的/lib目录中包装与Timekit wrap的交互。我没有看到这个web的创业板,所以您可以考虑将这个逻辑提取成一个,这样社区就可以从中受益。
休息-客户 gem看起来非常容易使用:
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模型或存储凭据的其他相关模型中。
https://stackoverflow.com/questions/35104489
复制相似问题