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
我添加了对 manifest.json 和 Client ID 和 Scopes 的权限 为了触发身份验证,我在我的 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 extension
的app ID 与Google Console Developpers
的app ID 不匹配
为避免这种情况,请先上传您的扩展程序,然后从 Chrome 复制 ID 并将其设置在 Google 控制台开发人员中!
每次在 Google Chrome 中更改时,都必须在 Google 控制台中更新它
【讨论】:
【参考方案2】:接受的答案不正确。您可以将它上传到网上商店,发布它,然后从网上商店安装它。安装后,找到已安装的扩展应用程序目录(Mac 上为~/Library/Application\ Support/Google/Chrome/Default/Extensions/<ext id>
),并将已安装的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 不工作的主要内容,如果未能解决你的问题,请参考以下文章