我正在尝试通过Javascript获取ArcGIS Online服务的令牌,如their website (under "Using REST")所述,并且想知道我的代码是否正确。
这只是一些确实执行的Javascript,但警报始终返回null:
<script type="text/javascript">
xhr = new XMLHttpRequest();
var url = "https://www.arcgis.com/sharing/rest/oauth2/token/";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function ()
{
if (xhr.readyState == XMLHttpRequest.DONE)
{
alert(xhr.responseXML);
}
}
var MyJSON = JSON.stringify({ "client_id": "<MY_CLIENT_ID>", "client_secret": "<MY_CLIENT_SECRET>" });
xhr.send(MyJSON);
</script>
我认为我已经找到了正确的设置,但代码是否正确?它应该返回一个access_token属性。
编辑 - 我正在使用警报来检查它是否正在返回某些内容。目前它正在返回null。
再次编辑 - 这与this question
中的代码相同AND EDIT AGAIN:
ArcGIS Online似乎在Node.js中提供以下代码示例:
var request = require('request'); // npm install request
// generate a token with your client id and client secret
request.post({
url: 'https://www.arcgis.com/sharing/rest/oauth2/token/',
json: true,
form: {
'f': 'json',
'client_id': 'YOUR_APPLICATIONS_CLIENT_ID',
'client_secret': 'YOUR_APPLICATIONS_CLIENT_SECRET',
'grant_type': 'client_credentials',
'expiration': '1440'
}
}, function(error, response, body){
console.log(body.access_token);
});
和
var request = require('request'); // npm install request
request.post({
url: 'http://geoenrich.arcgis.com/arcgis/rest/services/World/GeoenrichmentServer/Geoenrichment/enrich',
json:true,
form: {
f: 'json',
token: 'J-S0KLOl5_8UIqzZfmjPp6KQQeN5rnDRxRKB73n7B2hxuuI6Fec09IsIk0n8a0j-LoBskkio0I5fL0sY5iLf1J8lfhgq1gdaOAB15sm2wEaRooZbWz87bWptfGOMlqfFCoGRwF9n0h3tOd21lMyB9g..',
studyAreas: '[{"geometry":{"x":-117.1956,"y":34.0572}}]'
}
}, function(error, response, body){
console.log(body);
});
但即使require('request');
未定义,这也会遇到障碍。
编辑(再次) - 安装了Node.js并且它可以正常工作,但我无法弄清楚如何获取access_token。