chrome.identity.getAuthToken 不工作

Posted

技术标签:

【中文标题】chrome.identity.getAuthToken 不工作【英文标题】:chrome.identity.getAuthToken not working 【发布时间】:2015-09-17 10:40:30 【问题描述】:

我正在使用 Chrome Identity API,以便在我的 Chrome 扩展程序上为用户提供 Google 身份验证。

我按照谷歌官方教程:link Chrome Identity API

我添加了对 ma​​nifest.jsonClient IDScopes 的权限 为了触发身份验证,我在我的 Background.js 中添加了这段代码

chrome.identity.getAuthToken

问题是当我执行扩展时我被重定向到这个登录页面

chrome://chrome-signin/?source=5

但在成功验证后,我会再次重定向到登录页面

有什么问题?

Manifest.json


  "name": "My Extension",
  "short_name": "Ex App",
  "version": "0.1",
  "description": "description",
  "manifest_version": 2,
  "icons":  "128": "ICONE.png", "48": "ICONE1.png" ,
  "permissions": ["contextMenus", "identity", "cookies", "http://*/*",   "https://*/*", "<all_urls>", "unlimitedStorage"],
  "browser_action": 
    "default_title": "Title",
    "default_icon": "imgIcone.png"
  ,
  "oauth2": 
        "client_id": "xxxxxxx",
        "scopes": [
            "https://www.googleapis.com/auth/userinfo.email"
    ]   
,   

  "background": 
    "scripts": ["background.js"]
  ,

    "content_scripts"   : [

  "matches": ["*://*.google.com/*"],
  "js": ["gadget/js/jquery.js","gadget/js/contactcard.js"],
  "css": ["gadget/css/contactcard.css"],
  "all_frames": true
  ],  

  "content_security_policy": "script-src 'self' 'unsafe-eval' https://apis.google.com/; object-src 'self'",
  "web_accessible_resources": ["img.png","gadget/css/contactcard.css","gadget/img/extension/crec.png"]

背景.js:

chrome.identity.getAuthToken( 'interactive': true , function(token) 
        // Use the token.
        console.log(token); 
            );

【问题讨论】:

Error: origin_mismatch for Chrome extension的可能重复 无需更改问题的标题;每个人都可以看到有答案,并且您可以将答案标记为已接受(尽管这样做可能需要时间延迟)进一步表明它不需要回答。 @Xan 感谢您的信息! 我面临同样的问题,但我的应用程序 ID 与我在 Chrome 控制台中的 ID 相同 我有这个问题,这让我很生气:***.com/questions/48615964/… 【参考方案1】:

问题已解决!

我的Chrome extensionapp IDGoogle Console Developpersapp ID 不匹配 为避免这种情况,请先上传您的扩展程序,然后从 Chrome 复制 ID 并将其设置在 Google 控制台开发人员中! 每次在 Google Chrome 中更改时,都必须在 Google 控制台中更新它

【讨论】:

【参考方案2】:

接受的答案不正确。您可以将它上传到网上商店,发布它,然后从网上商店安装它。安装后,找到已安装的扩展应用程序目录(Mac 上为~/Library/Application\ Support/Google/Chrome/Default/Extensions/&lt;ext id&gt;),并将已安装的manifest.json 中的key 密钥复制到源代码manifest.json 中。将key 字段添加到您的manifest.json 后,您的应用ID 在本地开发过程中不会更改。

来源:https://developer.chrome.com/apps/app_identity#copy_key

【讨论】:

这不会使任何已接受的答案无效。是的,您可以阻止它发生变化(并且您描述了其中一种方式),但答案不包含 any 不正确的陈述。 好的,接受的答案不是理想的解决方案。只需将您的应用程序添加到网上商店并发布即可。您可以将其私下发布,以便仅对您可用,或选择电子邮件地址以进行下载。 我同意@web-student-ksu!由于我们正在谈论 abt 开发,假设我想集成一个 google + 登录,那么我需要在开发环境中检查它,然后将其上传到 webstore。我需要钥匙才能使身份工作。 Xan 接受的答案没有任何意义。【参考方案3】:

对于其他用户,他们可能会面临 chrome.identify.getauthtoken 未触发或您登录但没有任何反应的问题。

检查您的清单并将其减少到最低限度。例如 “oauth2”:“client.id”:“alongstring”,“范围”:[“bla”,“openid”,“bla”]。在数组中有openid,回调根本没有触发,没有警报,没有任何东西。

在我的 oauth2 范围内有 openid 以某种方式阻止了回调被触发。

【讨论】:

【参考方案4】:

如果chrome.identity.getAuthToken 中的回调根本没有为您触发,请确保您在 manifest.json 中使用“browser_action”而不是“page_action”。

【讨论】:

以上是关于chrome.identity.getAuthToken 不工作的主要内容,如果未能解决你的问题,请参考以下文章