我正在尝试访问由GE CityIQ API驱动的Current开发一个停车应用程序,我遵循了API文档,但是由于没有访问令牌,我似乎无法成功查询。我有一个用户名和密码,以及我所使用的城市提供的用于停车的URL和前缀区域ID。当我尝试运行JavaScript并记录访问令牌时,响应为“Unauthorized”
。我是否需要向城市提出访问令牌的请求?
代码是用javascript编写的,并且使用了node.js和node-fetch。
这是我的代码:
const fetch = require("node-fetch")
function request(url, headers, body) {
let options = { headers: headers, body:body}
return fetch(url, options).then(result => {
if (result.status>=400) return(result.statusText)
else return result.text().then(txt => {
try { return JSON.parse(txt) }
catch (err) { return txt }
})
})
}
// my credentials
const developer, uaa, metadataservice, eventservice, predixZone
developer = '{user}:{pass}'
uaa='{uaaURL}'
eventservice='{eventURL}'
metadataservice='{metadataURL}'
predixZone='{predixzoneParking}'
async function example(event){
let devToken = (await request(uaa+'?grant_type=client_credentials', {authorization: 'Basic '+developer}))
console.log(devToken)
let output = (await request(metadataservice+'/assets/search?q=eventTypes:PKIN',{authorization: 'Bearer '+devToken,'predix-zone-id':predixZone})).content
console.log(output)
}
example()
我在做错什么或可能错过了什么?
答案 0 :(得分:1)
您似乎没有对base64编码的用户名和密码。
在代码顶部:
const btoa = str => new Buffer(str).toString('base64')
声明用户名并通过时:
developer = btoa('{user}:{pass}')