金数据 API v1 认证方式
金数据 API v1 使用 HTTP 基本验证方式(HTTP Basic Authentication)
| 功能 | 免费版 | 专业版/专业增强版 | 企业基础版 | 企业协作版 | 企业高级版 |
|---|---|---|---|---|---|
| 单账号认证 | ✔️ | ✔️ | ✔️ | ||
| 企业全局认证 | ✔️ | ✔️ | ✔️ |
操作流程
- API 调用者,通过金数据系统后台,生成 API Key 和 API Secret
- 将 API Key 和 API Secret 拼接成为字符串(
api_key + ":" + api_secret) - 将字符串进行 Base64 编码
- 将编码后的字符串拼接
Basic头("Basic " + encoded_string) - 将最终字符串,放置在 HTTP 请求头的
Authorization中 - 发送 HTTP 请求到 API 接口,完成 API 调用
注:大多数编程语言的类库中,对 HTTP Basic 认证都有直接的支持,可以直接使用相应的类库完成
headers 设置
需要在请求中设置如下 headers
Content-Type: application/jsonAccept: application/jsonAuthorization: 放入上一步骤生成的CODE
获取 Key/Secret
开启子账号级别 API v1
每个账号(以及企业版套餐中的子账号),都可以在「个人中心」中,获取自己账号的 API Key 和 API Secret 。
- PC 进入金数据后台系统
- 右上角头像 -> 「个人中心」
- 「API」
- 如果是第一次访问,点击 「开启 API 访问」
个人级别的 API,只可以访问对应账号创建的表单,以及相应的数据
适用于个人版套餐、企业版套餐
开启企业级别 API v1
金数据企业版套餐,除了个人 API 外,还可以使用「企业级别 API」
- 企业管理员,在 PC 进入金数据后台系统
- 「系统设置」
- 「企业 API」
- 如果是第一次访问,点击 「开启 API 访问」
企业级别 API,可以访问整个企业所有的表单和数据
适用于企业版套餐
示例代码
伪代码
api_key = "YOUR_API_KEY"
api_secret = "YOUR_API_SECRET"
credentials = api_key + ":" + api_secret
encoded_creadentials = base64_encode(credentials)
auth_header_payload = "Basic " + encoded_creadentials
headers = {"Authorization": auth_header_payload}
http.get("https://jinshuju.net/api/v1/forms", headers)
HTTP
GET https://jinshuju.net/api/v1/forms
Content-Type: application/json
Accept: application/json
Authorization: Basic BASE_64_ENCODED_CREDENTIALS
Postman
GET https://jinshuju.net/api/v1/forms
authorization 选择 `Basic Auth`
Username 输入 API Key
Password 输入 API Secret
Java
package net.jinshuju;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
public class JinshujuApiV1Demo {
public void run() {
String apiKey = "YOUR_API_KEY";
String apiSecret = "YOUR_API_SECRET";
String credentials = apiKey + ":" + apiSecret;
String base64EncodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes());
String authHeaderPayload = "Basic " + base64EncodedCredentials;
BufferedReader httpResponseReader = null;
try {
URL apiEndpointUrl = new URL("https://jinshuju.net/api/v1/forms");
HttpURLConnection urlConnection = (HttpURLConnection) apiEndpointUrl.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.addRequestProperty("Authorization", authHeaderPayload);
httpResponseReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
String lineRead;
while ((lineRead = httpResponseReader.readLine()) != null) {
System.out.println(lineRead);
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (httpResponseReader != null) {
try {
httpResponseReader.close();
} catch (IOException ignored) {
}
}
}
}
}
Python
import requests
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'
api_endpoint_url = 'https://jinshuju.net/api/v1/forms'
response = requests.get(api_endpoint_url, auth = (api_key, api_secret))
print(response.text)
Ruby
require 'net/http'
require 'uri'
uri = URI.parse('https://jinshuju.net/api/v1/forms')
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'
request = Net::HTTP::Get.new(uri)
request.basic_auth(api_key, api_secret)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts(response.body)