[英]How to get Box access token from a webpage html or javascript?
嗨,我正在尝试从网页上将用户登录到Box.com。 我用一个简单的HTML表单提交完成了第一部分:
<form action="https://www.box.com/api/oauth2/authorize" type="POST" enctype="application/x-www-form-urlencoded">
<input type="text" name="response_type" value="code">
<input type="text" name="client_id" value="[REMOVED]">
<input type="text" name="state" value="vexhax97td8xf_SomeTemporaryValueForTesting">
<input type="submit">
</form>
这可以正常工作,我可以使用javascript从查询参数中获取授权代码。 然后,我尝试使用相同的方法获取访问代码(auth代码是由javascript在页面加载时设置的):
<form action="https://app.box.com/api/oauth2/token" type="POST" enctype="application/x-www-form-urlencoded">
<input type="text" name="grant_type" value="authorization_code">
<input id="auth-code" type="text" name="code" value="">
<input type="text" name="client_id" value="[REMOVED]">
<input type="text" name="client_secret" value="[REMOVED]">
<input type="submit">
</form>
但是我收到“无效的grant_type参数或参数丢失”错误。 另外,无论如何,显示响应json都不是一个好的用户体验。 我尝试了没有enctype="application/x-www-form-urlencoded"
并得到了相同的错误。
Box教程使用curl来做到这一点,而这显然不是网页上的选择。 如何获取访问令牌而不会出现“ Invalid ...”错误,有没有办法通过后台的JavaScript来实现?
对于访问令牌交换的授权码,缺少“ redirect_uri”参数。 但这不是真正的问题。
交换应该在服务器端进行,而您是在客户端(浏览器)进行交换。 也许您可以通过AJAX调用进行交换,以正确处理JSON答复,但前提是box.com允许CORS(我对此表示怀疑)。
这样,您还将在网页上公开client_id和client_secret(因此,为什么不愿意将其发布在stackoverflow上?)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.