首页 > 解决方案 > Forge Autodesk - 2 腿 OAuth

问题描述

我们收到客户的询问,希望从我们的应用程序中启用 Autodesk 模型查看器。第一步是实现OAuth2身份验证(2 条腿)。我遵循了 Forge Autodesk 教程,但这对我来说是全新的,我无法将其配置为工作。我确实从我们的应用程序http请求(使用jQuery),传递client_idand client_secret, grant_type 和一个范围。在查看开发人员菜单(F12)时 - 我可以看到该请求正在访问他们的服务器并返回access_token,过期时间,授权“Bearer”,状态为200。到目前为止,一切都很好。

我知道现在我需要回调 API 并传递我收到的这个 access_token。这是我丢失的地方:控制台向我显示错误,Cross origin ...并且http请求的成功部分没有触发(在http请求成功部分我试图将用户重定向到我们刚刚收到的模型查看器url + access_token )。但它永远不会着火。正在挖掘论坛和教程,但找不到任何好的示例或解释我做错了什么。下面是我的代码示例

$.post("https://developer.api.autodesk.com/authentication/v1/authenticate", 
     {
      client_id: 'here_is_a_client_id',
      client_secret: 'here_is_a_client_secret',
      grant_type: 'client_credentials',
      scope: 'viewables:read'
    },
   function(data, status){
    console.log("Data: " + data);
window.location.href = 'https://viewer.autodesk.com/id/here_is_a_long_id_number&Authorization=Bearer&' + data;

});

任何帮助高度赞赏。此外,我尝试使用 来遵循 Autodesk 教程Node.js,但是在看到access_token从他们的服务器返回后,我无法进行回调并将其附加access_token到它。所有这些都是新手Authorization/Authentication/Tokens,所以无法弄清楚它的工作方式。提前致谢。

标签: oauth-2.0autodesk-forgeautodesk-viewerautodesk

解决方案


我可以建议您如何避免此跨域错误,但在客户端授权您的应用程序至关重要,而且非常危险。公开您的客户端密钥将使每个人都有权访问您的帐户并代表您使用云积分。并访问您的所有内容。这就是您不应该采用这种方法的原因。

您不应该公开客户端密码,也不应该公开客户端上的读/写范围的访问令牌,这些都应该驻留在服务器上,并且只能驻留在服务器上。您最终可以在客户端上看到的唯一访问令牌应该是 viewables:read 范围内的令牌。即使使用 viewables:read 令牌,我也更喜欢自己使用代理(请参阅此处)。


推荐阅读