【问题标题】:Chrome extension using Google Drive API使用 Google Drive API 的 Chrome 扩展
【发布时间】:2021-03-27 11:35:19
【问题描述】:

我正在尝试获取一个 google 扩展程序以使用 Google Drive api。

到目前为止,我还没有发布扩展,并且正在努力确定清单中的键值和 client_id 应该是什么。

"permissions": ["https://www.googleapis.com/","https://accounts.google.com/","identity"],
  "background":{
    "scripts": ["background.js"]
  },
  "oauth2": {
    "client_id": "?????",
    "scopes": [
      "https://www.googleapis.com/auth/drive"
    ]
  },
key:"????"

我尝试了这篇文章中的说明:

https://medium.com/swlh/oauth2-openid-chrome-extension-login-system-29285323882f

这表明可以通过查看 chrome://extensions 中扩展的“id”字段来找到密钥。然后我可以转到 Library/Application Support/Google/Chrome/Default/Extensions/{id},然后我可以在那里使用清单中的密钥。

我已经尝试通过转到谷歌开发者控制台https://console.developers.google.com/ 来获取 client_id,我在其中创建了一个项目并启用了 Drive API。然后我进入 Google Drive API 屏幕并创建一个“Web 应用程序”OAuth 2 凭据,并将此处的 client_id 复制到清单的 oauth 部分,但是当我调用 chrome.identity.getAuthToken 时,我收到此错误在 chrome.runtime.lastError 中

OAuth2 请求失败:服务响应错误:'bad client id: {0}'

谷歌开发者的控制台是为 chrome 扩展生成 client_id 的正确位置吗?有一条警告说“为了保护您和您的用户,您的同意屏幕和应用程序需要由 Google 验证”。这是一个扩展而不是应用程序,所以我想我是在错误的地方。

任何指针将不胜感激。

【问题讨论】:

    标签: google-chrome-extension google-drive-api


    【解决方案1】:

    中篇文章

    我会推荐 Google 的方法,因为它的配置要少得多,但要获取属性值,请注意您可以执行以下操作:

    key 由以下人员找到:

    1. 打包 chrome 扩展
    2. 将.crx文件拖入chrome://extensions
    3. 在 Windows 文件资源管理器中导航到 C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Extensions\<packed-extension-id>\
    4. 打开manifest.json
    5. 复制key 值并将其添加到您的扩展程序中。

    然后文章指出您需要删除打包的扩展并加载解压的开发扩展。

    对于client_id,您需要创建一个新的 OAuth 客户端 ID(Web 应用程序)并在以下结构中添加一个重定向 URI: https://<extension-id>.chromiumapp.org。 然后可以将其添加到 manifest.json。

    我还会确保将您的同意屏幕配置为添加 Google 云端硬盘,这将是一项敏感权限。只要您在扩展程序中使用您的 Google 帐户,就不需要经过验证过程。

    谷歌示例

    为了让 OAuth 在 Chrome 扩展程序中工作,这里有一个更深入的演练: https://developer.chrome.com/docs/extensions/mv2/tut_oauth/

    基本上,您需要将扩展​​程序作为草稿上传到 Chrome 开发者仪表板中。上传后(可以保留草稿),它将在网上商店中创建一个项目 ID。

    您还将在已上传项目的“包”部分中找到 public key,这将是清单中的 key 值。

    然后,您可以使用新的 OAuth 客户端 ID(Chrome 应用程序)在 Google Cloud Console 中配置项目,并使用项目 ID 链接到网上商店 URL。保存后,您现在可以将关联的 client_id 值添加到清单中。

    【讨论】:

    • 中篇文章说你可以“假注册”扩展。它还说在云控制台中它应该是一个 Web 应用程序而不是一个 chrome 应用程序。
    • 有趣。我浏览了这篇文章并为keyclient_id 添加了他们想要的内容。我会推荐 Google 的示例,因为它不需要您配置身份验证端点,这也可能是它无法按预期工作的原因。
    • 在谷歌文章中,它说您应该将 OAuth 客户端 ID 创建为 Chrome 应用程序,但您在上面说它应该是一个 Web 应用程序。如果它是 Chrome 应用程序,您必须给它一个应用程序 ID,它是应用程序的 Chrome 网上应用店 URL 的最后一部分。如果是 Web 应用程序,则为重定向 url。
    • 我浏览了谷歌示例,它可以工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多