Javascript JSON始终返回“;“未指定客户id”;

Javascript JSON始终返回“;“未指定客户id”;,javascript,json,arcgis,Javascript,Json,Arcgis,我正在尝试使用Javascript从ArcGIS在线服务获取令牌。但是,它总是返回一个错误,表明没有指定客户端id 我在这里做的一切都对吗 <script type="text/javascript"> var MyJSONText = '{"client_id":"<<MY_CLIENT_ID>>","client_secret":"<<MY_CLIENT_SECRET>>","grant_type":"client_cred

我正在尝试使用Javascript从ArcGIS在线服务获取令牌。但是,它总是返回一个错误,表明没有指定客户端id

我在这里做的一切都对吗

<script type="text/javascript">
    var MyJSONText = '{"client_id":"<<MY_CLIENT_ID>>","client_secret":"<<MY_CLIENT_SECRET>>","grant_type":"client_credentials","expiration":"1440","f":"json"}';
    var MyJSON = JSON.parse(MyJSONText);
    xhr = new XMLHttpRequest();
    xhr.open("POST", "https://www.arcgis.com/sharing/rest/oauth2/token/");
    xhr.send(MyJSON);
    xhr.onreadystatechange = function ()
    {
        if (xhr.readyState == 4 && xhr.status == 200)
        {
            alert(xhr.responseText);
        }
    }

</script>

我能够使用
应用程序/x-www-form-urlencoded
请求检索访问令牌:

POST https://www.arcgis.com/sharing/rest/oauth2/token HTTP/1.1
User-Agent: Fiddler
Content-Type: application/x-www-form-urlencoded
Host: www.arcgis.com
Content-Length: 126

client_id=<YOUR ID>&client_secret=<YOUR SECRET>&grant_type=client_credentials&expiration=1440&f=json
当然,正确地将正文格式化为
application/x-www-form-urlencoded
,而不是JSON。在我的测试中,这个端点不适用于JSON负载

不幸的是,从外观上看,令牌端点不支持在其CORS策略中设置
内容类型
请求头,这意味着您可能无法使用javascript调用它。此外,没有提到任何关于
javascript
作为受支持语言的内容


因此,基本上,如果您想实现这一点,您可以在服务器端获取访问令牌并将其传递给客户端。

访问令牌生成Url=>

标题

对于邮递员中的尸体,选择“x-www-form-urlencoded”

之后,您将使用token获得相应的预期结果

{"access_token":"S-z3mxAqsZBeihx8NgFmNGsZAUGfzKZWCYVV2TiQO422u9XDLTCTZAkpoecyxx_LAc71I_tPkeeOlo2Pzkapv01bBOA03SzMRjRMOm-h3ljTl-pb3XdffoyYjCflE4F8LD377DbpjDWkupkdTaxJpg..","expires_in":7200}

在飞行前响应中,Access Control Allow header不允许返回
请求标头字段内容类型。
在console.log中。抱歉,返回时仍然未指定
客户端id
错误。是的,仍然收到相同的错误。无论如何,谢谢你-我会把它标记为答案。看起来我必须重新评估我使用的方法,并进一步研究如何使用node.js
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
{"access_token":"S-z3mxAqsZBeihx8NgFmNGsZAUGfzKZWCYVV2TiQO422u9XDLTCTZAkpoecyxx_LAc71I_tPkeeOlo2Pzkapv01bBOA03SzMRjRMOm-h3ljTl-pb3XdffoyYjCflE4F8LD377DbpjDWkupkdTaxJpg..","expires_in":7200}