我一直在学习Autodesk Forge示例应用程序教程。
WHen我点击按钮连接到我的帐户,我得到这个错误;
{"developerMessage":"The required parameter(s) redirect_uri not present in the request","errorCode":"AUTH-008","more info":"https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/error_handling/"}发布于 2021-04-07 19:52:25
如果你得到这个错误,你可能正在尝试一个3条腿的oauth流。这意味着您没有在请求中提供回调url。由于您没有说您一直在使用哪个教程,让我向您指出两个来源--伪造文档教程here或学习伪造教程here
在这两种情况下,在Forge portal上的应用程序页面中定义回调url都很重要-如果您使用的是本地计算机,它应该类似于http://localhost:3000/mycallback。learnforge材质告诉您将其定义为(请参见here):
http://localhost:3000/api/forge/callback/oauth文档教程中提到要在哪里使用
http://sampleapp.com/oauth/callback但在这里,他们假设您拥有域sampleapp.com,这可能不是真的。在本地机器上开发when服务器时,您需要用自己的域或localhost:port替换sampleapp.com。注当您要在服务器上运行代码时,使用真正的域与本地主机,并更新应用程序页面和代码以使用相同的定义,这一点很重要。我通常设置3个应用程序(dev: with localhost:3001,staging: with myapp-staging.autod3sk.net,and production: with myapp.autod3sk.net) -这是为了避免必须一直编辑密钥,并使应用程序部署变得更容易。
现在已经设置了应用程序,您需要在请求中使用该URL,如Oauth API中所述。但所有参数都应该是URL编码的,否则/字符将被服务器误解。未能在请求中传递正确且已编码的URL参数将导致您看到的错误。
下面是一个示例:
https://developer.api.autodesk.com/authentication/v1/authorize \
?response_type=code \
&client_id=MYCLIENT_ID \
&redirect_uri=MY_ENCODE_CALLBACKURL \
&scope=REQUIRED_SCOPES替换占位符后,它应该如下所示
https://developer.api.autodesk.com/authentication/v1/authorize\
?response_type=code\
&client_id=oz9f...k2d\
&redirect_uri=http%3a%2f%2flocalhost%3a3000%2fapi%2fforge%2fcallback%2foauth\
&scope=data%3aread将其复制到您的浏览器中,在登录和同意页面之后,该服务应返回到您的浏览器,并显示如下URL:
http://localhost:3000/api/forge/callback/oauth?code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I因为我们还没有服务器,所以浏览器会出错,但您可以清楚地看到返回给您的URL和代码。您知道需要将该代码复制到另一个请求中才能获得最终令牌。在这里,我们将使用curl,但理想情况下,请求和回调都应该由您的服务器代码处理。
curl 'https://developer.api.autodesk.com/authentication/v1/gettoken' \
-X 'POST' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=oz9f...k2d' \
-d 'client_secret=eUr...Q1e' \
-d 'grant_type=authorization_code' \
-d 'code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I' \
-d 'redirect_uri=http://localhost:3000/api/forge/callback/oauth'理想情况下,所有这些都需要在您的服务器代码中完成,就像learnforge教程教您做的那样。
https://stackoverflow.com/questions/66974325
复制相似问题