Chrome.identity not available/undefined

pdtvr36n  于 2023-04-03  发布在  Go
关注(0)|答案(3)|浏览(134)

我正在写一个chrome扩展,我想在其中使用chrome.identity API。但是我的Chrome不能识别身份。
在开发人员工具中的以下代码中,我得到一个错误,说“无法读取未定义的属性getAuthToken:

chrome.identity.getAuthToken({ 'interactive': false }, function(token) {

我试着在控制台中输入。chrome.extension可以工作,但是chrome.identity没有定义。
我的manifest.json在权限中有“identity”。我使用的是最新的Chrome v38。启用identity API还需要什么吗?

ukdjmx9f

ukdjmx9f1#

我无法使用身份的原因是因为我试图从内容脚本访问它。我切换到后台脚本,它现在工作!谢谢罗布!
PS!你还需要在你的manifest.json中设置"permissions": ["identity"]

92vpleto

92vpleto2#

它可能需要在你的清单中提供一个“key”值(如果你试图让它在本地工作,但它不工作)。你可以使用与你上传扩展到webstore时获得的相同的密钥,或者尝试packing an extension生成一个新的密钥(尽管我自己无法使用第二种方法)。

b5lpy0ml

b5lpy0ml3#

您可以在内容脚本中访问它,即content.js,方法是使用“消息传递API”向background.js发送消息并将其返回到content.js。
content.js:

chrome.runtime.sendMessage({type: "getAuthToken"}, function(response) {
  alert(response.token);
});

在background.js中:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.type === "getAuthToken") {
    chrome.identity.getAuthToken({interactive: true}, function(token) {
      sendResponse({token: token});
    });
    return true;
  }
});

你的manifest.json至少应该有这些属性:

{
  ...
  "permissions": [
    ...
    "identity",
    ...
  ],
  ...
  "background": {
    "service_worker": "background.js"
  },
  ...
  "content_scripts": [
    ...
    {
      "matches": ["https://example.com/*"],
      "js": ["content.js"],
      "match_origin_as_fallback": false
    },
    ...
  ]
}

现在,当您转到www.example.com时example.com,应该会出现一个带有logged in users令牌的警报,假设您的扩展已经登录了该用户。

相关问题