我正在构建一个 SPA 以连接到 AEC 数据模型。我正在遵循 APS 的此身份验证指南,但我无法使其正常工作。具体来说,我的问题在于“第 3 步”,我收到“403 Forbidden”错误。
完成这项工作有很多步骤,但我将尝试概述到目前为止我所做的一切:
我已从“创建应用程序”模式成功创建了“桌面、移动、单页应用程序”。我得到了一个用于我的应用程序的“客户端 ID”,并且我已允许“API 访问”框中可能的所有 API,其中包括“AEC 数据模型 API”。在这个盒子里,写着:
高级 API 不适用于具有 PKCE 授予类型的授权代码。
如果我是正确的,“AEC 数据模型 API”不是高级 API,因为 “AEC 数据模型 API”不获取令牌,因此,这不应该是问题,但如果我是,请纠正我错了。
在“应用程序”中注册应用程序后,我将“客户端 ID”添加到我的组织自定义集成中。
我现在遵循此身份验证指南。
第 1 步:我创建一个代码挑战和一个代码验证器:
{
"code_challenge": "eJy4IjlN3Pu8ob27lc07Qw5RESB8lkyhWQlZcdllJf8",
"code_verifier": "tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE"
}
然后我将用户重定向到以下网址:
第 2 步:我登录并完成身份验证流程,并成功收到返回的代码(与验证器一起显示):
{
"code": "ePJW9yuMwW2cR1co-Xmxq_Qwx629KfmGXYMIaJaO",
"code_verifier": "tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE"
}
第 3 步:我发出获取请求以获取访问代码。端点为https://developer.api.autodesk.com/authentication/v2/token,获取的内容为:
{
"method": "POST",
"headers": {
"Content-Type": "application/json; charset=UTF-8"
},
"body": "{\"grant_type\":\"authorization_code\",\"client_id\":\"myapplicationclientidwhichihavehiddenhere\",\"code_verifier\":\"tjPmAq_gC-v91KZ4co9Yw_xiSCCpKX8LfWzKnHO5hRE\",\"code\":\"ePJW9yuMwW2cR1co-Xmxq_Qwx629KfmGXYMIaJaO\",\"redirect_uri\":\"http://localhost:5173\"}"
}
请求的响应是
POST https://developer.api.autodesk.com/authentication/v2/token 403 (Forbidden)
。
我不知道我做错了什么,会是什么?
获取的内容为:
令牌端点不需要 JSON,它需要“表单编码”,即
application/x-www-form-urlencoded
https://aps.autodesk.com/en/docs/oauth/v2/reference/http/gettoken-POST/#resource-information:
数据格式:表单编码(请求); JSON(响应)
我大胆突出显示; request 应该使用表单编码,而您将得到的 response 将是 JSON。