Autodesk Forge API-设置具有读取,写入和创建数据的范围

时间:2019-04-18 21:50:36

标签: autodesk-forge

我最初创建了一个应用程序,并仅使用data:read范围开始开发它。现在,我意识到我也需要data:create范围。

  1. 应用程序设置中是否需要更改?
  2. 创建范围是否包含读取权限,然后写入范围包括创建和读取-还是必须单独发送该范围?
  3. 如果单独使用,当用户向应用授予权限时,该怎么做?是不是&scope = data:read&scope:create
  4. 我不必先存储然后使用两个令牌,对吗?
  5. 使用curl时如何处理?读取范围和创建范围是在数组中发送的吗?

    $response = $client->request('POST', 'https://developer.api.autodesk.com/authentication/v1/gettoken', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'code' => $authCode,
            'client_id' => $FusionID,
            'client_secret' => $FusionSecret,
            'redirect_uri' => 'https://www.example.com/fusionauth',
            'scope' => array('data'=>'create', 'data'=>'read')
        ]
    ]);
    

再次,可能是您仅使用了所需的作用域,并且必须存储单独的令牌,但这对我来说似乎不正确。

1 个答案:

答案 0 :(得分:0)

  

应用程序设置中是否需要更改?

如果按app settings的意思是在Forge应用程序门户中,则只需要在其中指定您的应用程序需要访问的API(确保在页面上选中了它们)。

  

创建范围包括读取权限,然后写入范围包括创建和读取-还是必须单独发送该范围?

否不能那样工作-您需要明确指定其中每个。

  

如果单独使用,当用户向应用授予权限时,该怎么做?是不是&scope = data:read&scope:create

不是,范围变量由空格分隔。对于三足式oauth,在访问令牌之前,您需要通过重定向用户以在我们的登录门户上进行身份验证来获取授权码,并且需要在请求URL中指示重定向地址和范围组合(不要忘记对它们进行URL编码),例如https://developer.api.autodesk.com/authentication/v1/authorize?response_type=code&client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar&scope=data:read。有关详细信息,请参见here

并查看我们的官方PHP client SDK-应该为您节省大量的精力和时间。

  

我不必先存储然后使用两个令牌,对吗?

如果您的令牌具有足够的权限(例如data:readdata:create),则不会。

  

使用curl时如何处理?读取范围和创建范围是在数组中发送的吗?

有关cURL,请参见此处的示例:https://forge.autodesk.com/en/docs/oauth/v2/tutorials/get-2-legged-token/

就像我们上面所进行的操作一样,在重定向用户进行身份验证时,您需要指定范围,因此在获取最终访问令牌的请求中,您应该采取以下措施:

$response = $client->request('POST', 'https://developer.api.autodesk.com/authentication/v1/gettoken', [
     'form_params' => [
        'grant_type' => 'authorization_code',
        'code' => $authCode,
        'client_id' => $FusionID,
        'client_secret' => $FusionSecret,
        'redirect_uri' => 'https://www.example.com/fusionauth'
        )
    ]
]);