我正在 ReactJS 中构建一个 chrome kiosk 应用程序,它需要访问正在运行的设备的 deviceId 以进行日志记录。我使用以下代码来调用 chrome.enterprise.deviceAttributes.getDirectoryDeviceId:
const getDeviceId = (cb) => {
if (!chrome.enterprise) {
if (cb) {
cb();
}
return;
}
// get device id
chrome.enterprise.deviceAttributes.getDirectoryDeviceId(assetId => {
deviceId = assetId;
if (cb) {
cb();
}
});
};
然后,通过执行以下操作来调用该函数:
getDeviceId(() => {
debug('Got device id: %s', deviceId);
});
现在,我知道此代码只能在已注册的 ChromeOS 设备上运行。我还知道 chrome.enterprise.deviceAttributes 仅适用于按策略预安装的扩展程序。因此,我只能在将其提交到 ChromeOS 商店并通过开发人员仪表板安装后对其进行测试。
长话短说:上面的代码不会返回 deviceId,这会导致我所有的 api 调用失败,我无法真正调试它,因为它是作为信息亭应用程序安装的。我想知道这里是否有人可以告诉我我做错了什么以及如何解决这个问题。
提前致谢!
最佳答案
我怀疑您可能没有在 list .json 中声明“enterprise.deviceAttributes”权限:
"permissions": [
"enterprise.deviceAttributes"
],
该权限列在 API 页面的顶部:https://developer.chrome.com/extensions/enterprise_deviceAttributes#intro
我在 Chrome 应用程序中创建的内容窗口内运行此 JavaScript,并且运行良好:
chrome.enterprise.deviceAttributes.getDirectoryDeviceId(deviceId => {
let publicDeviceId = document.getElementById('publicDeviceId');
publicDeviceId.innerText = deviceId;
});
它返回管理控制台 > 设备管理 > Chrome 设备 > 设备详细信息页面中 Chrome 设备详细信息页面上显示的值 - 部分:硬件和操作系统 > 目录 API ID。它是一个 GUID。
该 API 确实适用于 Chrome 应用(这是我测试过的唯一地方),尽管该 API 的文档会重定向到扩展程序页面。
关于javascript - chrome.enterprise.deviceAttributes.getDirectoryDeviceId 不适用于已注册的 chromebox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117315/