You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Autodesk Forge API获取Fusion Teams Doc公开分享链接及相关操作咨询

Autodesk Forge API 相关问题解答

1. 是否可通过Forge API获取文件的公开分享URL?

可以。通过Forge Data Management API创建公开共享链接后就能获取对应的URL,核心步骤:

  • 先定位目标文件对应的project_id和item_id
  • 调用POST /data/v1/projects/{project_id}/items/{item_id}/relationships/refs接口,创建类型为shared的引用,请求体指定权限为view(公开只读)
  • 接口返回响应里的data.links.href就是可公开访问的分享URL

2. 按文件名搜索团队中心文件并返回分享URL?可行吗?有脚本示例吗?

可行。先通过搜索接口定位目标文件,再生成共享链接。以下是简化的Node.js示例(用axios发送请求,注释已做简化适配新手):

const axios = require('axios');

// 替换成你的实际信息
const FORGE_CLIENT_ID = '你的Client ID';
const FORGE_CLIENT_SECRET = '你的Client Secret';
const PROJECT_ID = '你的团队中心项目ID';
const TARGET_FILENAME = '要搜索的文件名';

// 获取Forge访问令牌
async function getAccessToken() {
  const res = await axios.post(
    'https://developer.api.autodesk.com/authentication/v1/authenticate',
    new URLSearchParams({
      client_id: FORGE_CLIENT_ID,
      client_secret: FORGE_CLIENT_SECRET,
      grant_type: 'client_credentials',
      scope: 'data:read data:write'
    })
  );
  return res.data.access_token;
}

// 按文件名搜索文件
async function searchFile(token, filename) {
  const res = await axios.post(
    `https://developer.api.autodesk.com/data/v1/projects/${PROJECT_ID}/search`,
    {
      filter: {
        type: 'items',
        attributes: { displayName: filename }
      }
    },
    { headers: { Authorization: `Bearer ${token}` } }
  );
  return res.data.data[0]; // 返回第一个匹配结果
}

// 创建公开分享链接
async function createShareLink(token, projectId, itemId) {
  const res = await axios.post(
    `https://developer.api.autodesk.com/data/v1/projects/${projectId}/items/${itemId}/relationships/refs`,
    {
      data: {
        type: 'refs',
        attributes: {
          name: 'Public Share',
          permission: 'view',
          extension: { type: 'refs:autodesk.core:SharedRef', version: '1.0' }
        },
        relationships: { target: { data: { type: 'items', id: itemId } } }
      }
    },
    { headers: { Authorization: `Bearer ${token}` } }
  );
  return res.data.data.links.href;
}

// 主执行流程
async function main() {
  try {
    const token = await getAccessToken();
    const fileItem = await searchFile(token, TARGET_FILENAME);
    if (!fileItem) {
      console.log('未找到匹配的文件');
      return;
    }
    const shareUrl = await createShareLink(token, PROJECT_ID, fileItem.id);
    console.log('文件公开分享URL:', shareUrl);
  } catch (err) {
    console.error('出错了:', err.response?.data || err.message);
  }
}

main();

运行前先执行npm install axios安装依赖,再替换代码里的占位符为你的实际信息即可。

3. 是否可通过API修改文件名?有现成脚本吗?

可以。通过PATCH /data/v1/projects/{project_id}/items/{item_id}接口修改文件item的displayName属性,以下是简化示例:

const axios = require('axios');

// 替换成你的实际信息
const FORGE_CLIENT_ID = '你的Client ID';
const FORGE_CLIENT_SECRET = '你的Client Secret';
const PROJECT_ID = '你的项目ID';
const ITEM_ID = '要修改的文件item ID';
const NEW_FILENAME = '新的文件名';

async function getAccessToken() {
  const res = await axios.post(
    'https://developer.api.autodesk.com/authentication/v1/authenticate',
    new URLSearchParams({
      client_id: FORGE_CLIENT_ID,
      client_secret: FORGE_CLIENT_SECRET,
      grant_type: 'client_credentials',
      scope: 'data:write'
    })
  );
  return res.data.access_token;
}

async function renameFile(token) {
  await axios.patch(
    `https://developer.api.autodesk.com/data/v1/projects/${PROJECT_ID}/items/${ITEM_ID}`,
    {
      data: {
        type: 'items',
        id: ITEM_ID,
        attributes: { displayName: NEW_FILENAME }
      }
    },
    { headers: { Authorization: `Bearer ${token}` } }
  );
  console.log('文件名修改成功');
}

async function main() {
  try {
    const token = await getAccessToken();
    await renameFile(token);
  } catch (err) {
    console.error('修改失败:', err.response?.data || err.message);
  }
}

main();

同样需要先安装axios,替换占位符后运行即可。

内容的提问来源于stack exchange,提问作者william0497

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:10:20