我最初创建了一个应用程序并开始仅使用数据开发它:读取范围。我现在意识到我需要数据:创建范围。
$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')
]
]);
同样,你可能只使用你需要的范围,你必须存储单独的令牌,但这对我来说似乎并不合适。
应用程序设置中是否有我需要更改的内容?
如果您在Forge App门户中使用app settings
,那么您只需在那里指定您的应用需要访问的API(确保在页面上检查它们)。
创建范围是否包含读取权限,然后写入范围包括创建和读取 - 或者该范围是否必须单独发送?
否不起作用 - 您需要明确指定其中的每一个。
如果单独使用,当用户授予应用权限时如何完成?它是&scope = data:read&scope:create
不是范围变量是由空格分隔的。对于三条腿的oauth,您需要通过重定向用户在您访问令牌之前在我们的登录门户进行身份验证来获取授权码,并且您需要在请求URL中指明重定向地址和范围组合(不要忘记URLEncode他们),如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:read
和data: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'
)
]
]);