获取Access Token
POST https://api.bimface.com/oauth2/token
说明
在调用其他API之前,必须先获取Access Token。
Access Token代表了用户当前应用的身份,用户可以通过Access Token对自己应用内的文件发起文件上传、下载、删除、模型转换、模型集成、模型对比等操作,同时也能访问所有BIMFACE的数据接口获取轻量化后的模型信息。
Access Token有效期为7天,7天内该Token不会发生改变。
public static String PATH = "https://api.bimface.com/";
public static String API_KEY = "DKR0tvObBRqOwJjqmO6W1XZnXnmBoQuT";
public static String SECRET_KEY = "zh5if25PuKddjtWN31KPE8EZJ4bQJNYs";
/**
* BASE64编码
*/
public static String encryptBASE64(String ak, String sk) {
byte[] key = (ak + ":" + sk).getBytes();
return Base64.getEncoder().encodeToString(key);
}
/**
* 获取Access Token
*
* @return accessToken
* @throws Exception
*/
public static String getAccessToken() throws Exception {
String authorization = "Basic " + (encryptBASE64(API_KEY, SECRET_KEY));
String tokenUrl = PATH + "oauth2/token";
String result = request(tokenUrl, "POST", authorization);
JSONObject jsonObject = new JSONObject(result);
String accessToken = jsonObject.getJSONObject("data").getString("token");
System.out.println("Access Token:" + accessToken);
return accessToken;
}
private static String request(String viewUrl, String method, String authorization) {
String result = "";
try {
URL realUrl = new URL(viewUrl);
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod(method);
connection.setRequestProperty("Authorization", authorization);
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
获取模型的View Token
GET https://api.bimface.com/view/token
说明
View Token代表对单个模型、集成模型、模型对比、场景的临时访问凭证,只能访问对应的模型数据。
需要通过使用应用的Access Token以及fileId、integrateId、compareId、submodelId或sceneId 获取View Token, 然后把View Token传入前端JavaScript组件提供的接口中,即可加载和浏览文件所包含的三维模型或二维图纸。
View Token有效期为12小时,为了减少用户重复请求View Token的次数,每次使用View Token都会重置有效期为12小时。
/**
* 获取模型的View Token
*
* @return
* @throws Exception
*/
public static String getViewToken(String fileId) throws Exception {
String viewUrl = PATH + "view/token?fileId=" + fileId;
String result = request(viewUrl, "GET", "Bearer " + getAccessToken());
JSONObject jsonObject = new JSONObject(result);
String viewToken = jsonObject.getString("data");
return viewToken;
}
完整代码
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
/**
* @Author: moses
* @Date: 2022/7/6
*/
public class BimfaceUtil {
public static String PATH = "https://api.bimface.com/";
public static String API_KEY = "DKR0tvObBRqOwJjqmO6W1XZnXnmBoQuT";
public static String SECRET_KEY = "zh5if25PuKddjtWN31KPE8EZJ4bQJNYs";
/**
* BASE64编码
*/
public static String encryptBASE64(String ak, String sk) {
byte[] key = (ak + ":" + sk).getBytes();
return Base64.getEncoder().encodeToString(key);
}
/**
* 获取Access Token
*
* @return accessToken
* @throws Exception
*/
public static String getAccessToken() throws Exception {
String authorization = "Basic " + (encryptBASE64(API_KEY, SECRET_KEY));
String tokenUrl = PATH + "oauth2/token";
String result = request(tokenUrl, "POST", authorization);
JSONObject jsonObject = new JSONObject(result);
String accessToken = jsonObject.getJSONObject("data").getString("token");
System.out.println("Access Token:" + accessToken);
return accessToken;
}
private static String request(String viewUrl, String method, String authorization) {
String result = "";
try {
URL realUrl = new URL(viewUrl);
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod(method);
connection.setRequestProperty("Authorization", authorization);
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* 获取模型的View Token
*
* @return
* @throws Exception
*/
public static String getViewToken(String fileId) throws Exception {
String viewUrl = PATH + "view/token?fileId=" + fileId;
String result = request(viewUrl, "GET", "Bearer " + getAccessToken());
JSONObject jsonObject = new JSONObject(result);
String viewToken = jsonObject.getString("data");
System.out.println("View Token:" + viewToken);
return viewToken;
}
public static void main(String[] args) throws Exception {
String fileId = "10000741390084";
getViewToken(fileId);
}
}