访问项目中的用户时出现403错误
403 error when accessing users in a project
我正在尝试使用此 Forge API 获取有权访问项目的用户列表。我将范围指定为 account:read
。我尝试起诉 Postman 以及我正在开发的 ASP.NET 核心后端。
在这两种情况下,我都会得到相同的错误:
{
"status": 403,
"type": "",
"id": "80757c600ab0de6c",
"title": "Forbidden",
"detail": "The 3 legged access token does not have access"
}
我需要在 BIM 360 中更改什么才能解决此错误吗?
这是我的后端代码 (BASE URL):
[HttpPost]
[Route("api/forge/bim360/projectusers")]
public async Task<dynamic> GetProjectUsersAsync([FromQuery] string projectId, [FromQuery] string userId)
{
dynamic access_token = await CheckToken();
RestClient client = new RestClient(BASE_URL);
RestRequest request = new RestRequest("/bim360/admin/v1/projects/{project_id}/users", RestSharp.Method.GET);
request.AddParameter("project_id", projectId, ParameterType.UrlSegment);
request.AddHeader("Authorization", "Bearer " + access_token);
request.AddHeader("User-Id", userId);
try
{
IRestResponse issueTypesResponse = await client.ExecuteGetTaskAsync(request);
dynamic users = JObject.Parse(issueTypesResponse.Content);
return Ok("Found Users");
}
catch (Exception ex)
{
//TODO Add real logger
StreamWriter st = new StreamWriter(@"Logg/logg.txt", true);
st.Write(ex.Message);
st.Close();
return StatusCode(500);
}
}
感谢任何帮助。
刚刚在此处尝试了您的代码,它工作正常。
错误消息指出 3LO 上的用户无权访问项目用户。
请注意,此端点适用于 3LO 或 2LO(有或没有 User-id)。
如果您更改为具有权限的用户或 2LO,您应该能够访问项目用户。
使用 3LO 时,权限由获得令牌的用户授予(User-id header 被忽略)。
研究了一段时间并弄明白了。它与 Forge App 的设置方式有关。我们检索到的访问令牌无法访问用户详细信息。
我正在尝试使用此 Forge API 获取有权访问项目的用户列表。我将范围指定为 account:read
。我尝试起诉 Postman 以及我正在开发的 ASP.NET 核心后端。
在这两种情况下,我都会得到相同的错误:
{
"status": 403,
"type": "",
"id": "80757c600ab0de6c",
"title": "Forbidden",
"detail": "The 3 legged access token does not have access"
}
我需要在 BIM 360 中更改什么才能解决此错误吗? 这是我的后端代码 (BASE URL):
[HttpPost]
[Route("api/forge/bim360/projectusers")]
public async Task<dynamic> GetProjectUsersAsync([FromQuery] string projectId, [FromQuery] string userId)
{
dynamic access_token = await CheckToken();
RestClient client = new RestClient(BASE_URL);
RestRequest request = new RestRequest("/bim360/admin/v1/projects/{project_id}/users", RestSharp.Method.GET);
request.AddParameter("project_id", projectId, ParameterType.UrlSegment);
request.AddHeader("Authorization", "Bearer " + access_token);
request.AddHeader("User-Id", userId);
try
{
IRestResponse issueTypesResponse = await client.ExecuteGetTaskAsync(request);
dynamic users = JObject.Parse(issueTypesResponse.Content);
return Ok("Found Users");
}
catch (Exception ex)
{
//TODO Add real logger
StreamWriter st = new StreamWriter(@"Logg/logg.txt", true);
st.Write(ex.Message);
st.Close();
return StatusCode(500);
}
}
感谢任何帮助。
刚刚在此处尝试了您的代码,它工作正常。 错误消息指出 3LO 上的用户无权访问项目用户。 请注意,此端点适用于 3LO 或 2LO(有或没有 User-id)。 如果您更改为具有权限的用户或 2LO,您应该能够访问项目用户。 使用 3LO 时,权限由获得令牌的用户授予(User-id header 被忽略)。
研究了一段时间并弄明白了。它与 Forge App 的设置方式有关。我们检索到的访问令牌无法访问用户详细信息。