Skip to content

Keepwork开放平台接入文档

onedou edited this page Nov 14, 2017 · 13 revisions

开始接入

Keepwork 开放平台介绍(OAuth 接入介绍)

共同创建干净纯粹的互联网开放生态

开放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

服务器接入

通过OAuthCode换取OAuthToken

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"
}

网站接入

Keepwork登录流程,如下:

  1. 从Web页面获取OAuthCode
  2. 将OAuthCode发送给第三方服务器,用户获得第三方服务器Token

从Web页面获取OAuthCode

开发者可以在第三方网站在前端页面发起访问此接口,获取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)

Paracraft客户端接入

客户端接入流程

  1. 获取Keepwork Token
  2. 使用Keepwork Token换取OAuthCode
  3. 将OAuthCode发送给第三方服务器,客户端得到第三方服务器Token

获取Keepwork 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 Token换取OAuthCode

使用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
    }
}
Clone this wiki locally