【问题标题】:chrome.identity User Authentication in a Chrome ExtensionChrome 扩展中的 chrome.identity 用户身份验证
【发布时间】:2014-09-22 13:46:21
【问题描述】:

我正在尝试编写一个需要用户身份验证的 chrome 扩展程序。
Google's tutorial 建议我需要先上传到网上商店以获得密钥:

  1. 使用与之前相同的 Google 帐户登录到 Google API 控制台 将您的应用上传到 Chrome 网上应用店。

我上传了一个无法运行的版本来获取密钥,但它已经挂在那里等待一个多星期了。我怎样才能获得那个密钥或以某种方式激励 Google 批准这个我不想在网上应用店中出现的应用程序?我做错了吗?

【问题讨论】:

    标签: google-chrome google-chrome-extension oauth


    【解决方案1】:

    您无需将扩展程序上传到 Chrome 网上应用店即可使用 chrome.identity API。有一个有效的扩展 ID 就足够了。最简单的入门方法是将 chrome://extensions/ 中的 32 个字符的扩展 ID 复制到 API console 的项目凭据部分请参见下面的屏幕截图
    尽管如果您想发布扩展程序或在不同的配置文件或计算机中使用它,那么您最好选择您控制的扩展程序 ID。这可以通过在清单文件中设置"key" 键来完成。有关生成这些密钥的详细答案,请参阅 Obtaining Chrome Extension ID for development

    例如,使用我刚刚生成的密钥尝试以下扩展。它将在对话框中打印您的用户信息。

    manifest.json

    {
        "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0W0/YVPvLrj2cWBOXfPBBYwPp56R+OJb9QLudyMpigF+V4DFV0NEUnbo9iA6m+7cVPiD6YbhbIaiAoHSdtqEKwaYvrEJRGuGsLjDq+RMwG2x+FcGIsO4ny0BuZaZ/Q2+DaL33NBUl2h9dIi1xa0Suq6qpoJ4yykTu9y7Q6rB9ulJze6DiZL7LWU5NzHCEWt21zAhpLZOqvYY8wzY69pMf+P0+uOLuy87x84rvCRNegbSmEYLC5f4y6ikjVnFUxJBxMlpMg3bByxbrLVBFPuHj4khkr6adUXgks2vBBHFcrRh5EYXopI+PLwUJPfFtzyN8+L7swen9kcK8gXMwX28KwIDAQAB",
        "name": "Identity test",
        "version": "1",
        "manifest_version": 2,
        "background": {
            "scripts": ["background.js"]
        },  
        "permissions": [
            "identity"
        ],  
        "oauth2": {
            "client_id": "1014705257182-52dddl9dbiec2ln22stokphlaq0v7gor.apps.googleusercontent.com",
            "scopes": ["profile"]   
        }   
    }
    

    background.js

    chrome.identity.getAuthToken({
        interactive: true
    }, function(token) {
        if (chrome.runtime.lastError) {
            alert(chrome.runtime.lastError.message);
            return;
        }
        var x = new XMLHttpRequest();
        x.open('GET', 'https://www.googleapis.com/oauth2/v2/userinfo?alt=json&access_token=' + token);
        x.onload = function() {
            alert(x.response);
        };
        x.send();
    });
    

    【讨论】:

    • 非常感谢!我会试试看。
    • 应该将 ID 复制到哪里(在 Google API 控制台的凭据部分)。?没有看到任何合适的字段。
    • @sdespolit 见截图。将您的扩展 ID 放在“/detail/”之后(标记为 6 的字段)。
    • 我已经完成了所有指定的操作,但我得到的只是再次登录 Chrome 的提示。没有警报。想法?
    • @Raine 在哪一步?
    【解决方案2】:

    有点晚了,但这是我之前困惑的根源

    这有点违反直觉,但在开始一个 chrome 扩展程序/应用程序后,您必须立即在网上商店“发布”以获得一致的密钥和 ID。如果您使用的是Chrome Dev Editor,请点击左上角的汉堡菜单并单击“发布到 Chrome 网上应用店”。

    完成后,您可以点击“打开开发者仪表板”并将您的应用保存为草稿。然后您将看到已发布应用程序的完整列表并单击应用程序旁边的“更多信息”并复制-----BEGIN PUBLIC KEY----------END PUBLIC KEY----- 之间的密钥。将其作为"key" 粘贴到您的清单中,然后您就可以继续离线开发了。

    【讨论】:

    • 我相信您必须“上传”您的扩展程序而不是“发布”。仅当您愿意将其发布给公众时才“发布”您的扩展。对于仪表板上的 chrome 扩展,有一个链接“更多信息”。单击它将显示扩展的“id”和公钥。
    猜你喜欢
    • 1970-01-01
    • 2023-01-07
    • 2016-03-27
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2019-09-12
    • 2013-02-02
    • 2016-05-03
    相关资源
    最近更新 更多