JAVA#BIMFACE系列2 获取访问凭证

获取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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值