-
Notifications
You must be signed in to change notification settings - Fork 18
Keepwork开放平台接入文档
开放Keepwork提供全链路研发、运维、安全等服务。通过Keepwork,让更多的企业或个人拥有更多的创造力,并用它构建一个干净,纯粹的网络平台,助力企业成长。
相比严格审核的Keepwork普通接口,开放平台可为第三方服务商提供一套更为安全的账号验证机制和更多的接口操作频率。
注:直接调用普通接口,现会受到Keepwork的严格限制,如:IP流量限制、每个IP每5分钟不能注册接口300次。如果第三方服务商使用普通接口登录,可能会出现IP被封的情况。
1.【申请接入】点击此链接 在底部留言申请,我们将会尽快处理你的需求。
2.审核通过后,申请人/申请组织将收到一份含有client_id和client_secret的机密邮件。
3.用户通过Keepwork 开放平台接口验证流程图,如下:
- 用户通过客户端登录keepwork普通接口获取keepwork token
- 客户端使用keepwork token换取OAuthCode
- 客户端将OAuthCode发给第三方服务器
- 返回第三方服务器Token给客户端,也可以直接将TCP长连接认证(例如游戏服务器)。
4.第三方服务器通过OAuthCode换取OAuthToken的流程,如下:
- 客户端将OAuthCode发送过第三方服务器
- 第三方服务器通过OAuthCode换取OAuthToken
- 第三方服务器将OAuthToken保存在数据库,并返回第三方服务器token给客户端或将TCP长连接认证
keepwork 开放平台接口域名
keepwork接口使用http协议,其域名为 keepwork.com
oauthToken是用户在第三方服务器的唯一凭据,用户通过第三方服务商调用Keepwork开放接口,需要使用此凭证,获取成功请将OAuthToken保存在服务器数据中。
接口调用请求说明:
http请求方式:GET
http://keepwork.com/api/wiki/models/oauth_app/getTokenByCode?client_id=xxx&code=xxx&client_secret=xxx&username=xxx
参数说明:
|参数 |是否必须|说明
|code |是 |在网站或客户端获取的OAuthToken,请确保数据正确,否则返回空数据
|username |否 |keepwork用户名,请确保数据正确,否则返回空数据
|client_id |是 |第三方服务商唯一凭证
|client_secret |是 |第三方服务商唯一凭证密钥,即client_secret
返回说明:
正确返回:
{"token":"OAuthToken"}
错误返回:
1.参数错误
{
"error": {
"message": "request params error",
"id": 2
}
}
2.username和code不一致
{
"error": 10003,
"message": "username error"
}
- 从Web页面获取OAuthCode
- 将OAuthCode发送给第三方服务器,用户获得第三方服务器Token
开发者可以在第三方网站在前端页面发起访问此接口,获取OAuthCode凭证后换取OAuthToken
接口调用请求说明:
http请求方式:GET
http://keepwork.com/wiki/oauth?response_type=code&client_id=YOURS&redirect_uri=YOURS
参数说明:
|参数 |是否必须|说明
|response_type |是 |填code
|client_id |是 |为应用程序申请的client_id
|redirect_uri |是 |Keepwork通过GET方式携带OAuthCode参数重定向至第三方服务商认证的页面(URL)
- 获取Keepwork Token
- 使用Keepwork Token换取OAuthCode
- 将OAuthCode发送给第三方服务器,客户端得到第三方服务器Token
使用Keepwork普通登录接口获取Keepwork Token
接口调用请求说明:
http请求方式:POST
http://keepwork.com/api/wiki/models/user/login
参数说明:
|参数 |是否必须|说明
|username |是 |Keepwork用户名
|password |是 |Keepwork用户密码
返回说明:
正常情况下,Keepwork会返回下述JSON数据包给客户端:
{
"error": {
"message": "success",
"id": 0
},
"data": {
"token": "eyJhbGciOiJNRDUiLCJ0eXAiOiJKV1QifQ.eyJ1c2VybmFtZSI6InRlc3R2MiIsInVzZXJJZCI6OTgsImV4cCI6MTQ5OTY2MTg4Mn0.T1RnMFlURTNZekptWVdZMk1tTXhaREJoWlRVek5tRTVaREZqTUdNNVl6az0",
"userinfo": {
"defaultSiteDataSource": {
"rawBaseUrl": "http://git.keepwork.com",
"updateFlag": 0,
"apiBaseUrl": "http://git.keepwork.com/api/v4",
"dataSourceId": 246,
"sitename": "__keepwork__",
"dataSourceToken": "iTEu22Do2hnYKgvVq6Qj",
"dataSourceUsername": "gitlab_rls_testv2",
"dataSourceUserId": 259,
"_id": 159,
"dataSourceName": "内置gitlab",
"projectId": 684,
"username": "testv2",
"type": "gitlab",
"rootPath": "",
"lastCommitId": "6c7a9ca4fb4fe5ed74315f733a9652c836b93f32",
"projectName": "keepworkdatasource"
},
"fansCount": 0,
"dataSourceId": 159,
"displayName": "testv2",
"joindate": "2017-06-06",
"password": "25d55ad283aa400af464c76d713c07ad",
"dataSource": [
{
"rawBaseUrl": "http://git.keepwork.com",
"updateFlag": 0,
"apiBaseUrl": "http://git.keepwork.com/api/v4",
"dataSourceId": 246,
"sitename": "__keepwork__",
"dataSourceToken": "iTEu22Do2hnYKgvVq6Qj",
"dataSourceUsername": "gitlab_rls_testv2",
"dataSourceUserId": 259,
"_id": 159,
"dataSourceName": "内置gitlab",
"projectId": 684,
"username": "testv2",
"type": "gitlab",
"rootPath": "",
"lastCommitId": "6c7a9ca4fb4fe5ed74315f733a9652c836b93f32",
"projectName": "keepworkdatasource"
}
],
"administrator": 0,
"roleId": 0,
"websiteCount": 0,
"username": "testv2",
"favoriteCount": 0,
"_id": 98
}
}
}
错误返回:
1.密码错误
{
"error": {
"message": "密码错误",
"id": -1
}
}
2.用户名错误:
{
"error": {
"message": "用户不存在",
"id": -1
}
}
3.请求超出限制:
{
"message": "prohibit access"
}
使用Keepwork普通接口换取OAuthCode
接口调用请求说明:
http请求方式:POST
http://keepwork.com/api/wiki/models/oauth_app/agreeOauth
Header参数说明
|参数 |是否必须|说明
|Authorization |是 |请传:Bearer YOURKEEPWORKTOKEN
参数说明:
|参数 |是否必须|说明
|username |是 |Keepwork用户名
|client_id |是 |第三方服务商唯一凭证
返回说明:
正确返回:
{
"error": {
"message": "success",
"id": 0
},
"data": {
"code": "7289672"
}
}
错误返回:
{
"error": {
"message": "request params error",
"id": 2
}
}