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

如何在Partner Card内获取Three-Legged Authentication?解决嵌入认证报错

解决APS Partner Card中Three-Legged认证的X-Frame-Options报错问题

这个报错的核心原因是Autodesk认证服务页面明确设置了X-Frame-Options: deny,禁止在任何iframe中加载,而Partner Card本身运行在BIM360/ACC页面的iframe环境里,直接重定向到认证页面会触发浏览器安全限制。

解决方法如下:

  • 使用独立弹出窗口承载认证流程
    不要在Partner Card的iframe内直接跳转认证页面,而是通过window.open()打开独立浏览器窗口加载认证地址,示例代码:

    // 构造完整的认证URL(替换为你的应用参数)
    const authUrl = 'https://auth.autodesk.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_CALLBACK_URL&response_type=code&scope=data:read';
    // 打开指定尺寸的弹出窗口
    window.open(authUrl, 'AutodeskAuth', 'width=600,height=800,top=100,left=100');
    
  • 实现认证回调与父窗口通信
    认证完成后,回调页面需将结果传递回Partner Card所在的父窗口,再关闭弹出窗口:

    1. 回调页面处理代码:
    // 从URL参数中提取授权码
    const urlParams = new URLSearchParams(window.location.search);
    const code = urlParams.get('code');
    // 向父窗口发送认证完成消息(生产环境建议指定具体域名)
    window.opener.postMessage({
      type: 'AUTH_COMPLETE',
      authorizationCode: code
    }, '*');
    // 关闭弹出窗口
    window.close();
    
    1. Partner Card页面监听消息事件:
    window.addEventListener('message', (event) => {
      // 验证消息来源(可选但推荐)
      if (event.origin !== 'YOUR_CALLBACK_DOMAIN') return;
      if (event.data.type === 'AUTH_COMPLETE') {
        const code = event.data.authorizationCode;
        // 用授权码换取访问令牌,继续后续业务逻辑
        console.log('Received authorization code:', code);
      }
    });
    
  • 配置合法的回调URL
    在APS开发者控制台的应用设置中,确保弹出窗口的回调URL已添加到「允许的回调URL」列表,否则认证服务会拒绝回调请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:12:56