Chrome扩展程序中background.js中的Google Oauth2

时间:2019-04-17 19:18:50

标签: javascript google-chrome-extension google-sheets google-api google-oauth2

我正在构建供个人使用的Chrome扩展程序(即不会打包和分发),以将网站中的数据转储到Google表格中。我想点击扩展程序,然后将其处理数据到我的工作表中。我相信这意味着我需要在background.js中执行Oauth流程。

我通过自定义此Google Sheets demo进行了初始授权流程,无法弄清楚如何使其在我的扩展程序中起作用。

我尝试了多种方法,包括使用chrome.identity API和gapi.client.init(),并遵循Chrome App sample。没有骰子。

我的一些问题...预先感谢:

  • Chrome扩展程序在多大程度上反映了Chrome应用程序?我了解Chrome应用已被弃用,因此想知道文档是否不一致。
  • 是否可以在不打包和上传我的应用程序的情况下执行此操作?控制台中的Oauth凭据页面要求提供Web Store URL
  • 是否可以在扩展程序中存储Google api.js的副本,还是必须从https://apis.google.com/js/client.js加载它?如果是这样,
  • 对于Chrome应用程序示例,key中包含的manifest.json在哪里?我已经看到诸如“将已安装manifest.json中的密钥复制到您的源清单中”的说明,但我不明白。
  • 有人知道完整的,独立的Chrome扩展程序示例吗?

1 个答案:

答案 0 :(得分:0)

Chrome扩展程序在多大程度上反映了Chrome应用程序?我了解Chrome应用已被弃用,因此想知道文档是否不一致。

扩展程序和应用程序在许多方面都相似,但是对于您而言,要克服的主要障碍是两者对Google身份验证的处理方式不同。扩展具有权限限制,其中javascript不能在某些地方运行。因此,Chrome扩展程序在background.js中使用chrome.identity建立安全的连接和令牌。实现它的一般过程如下:

  1. 制作一个Chrome扩展程序,将其压缩,上传到您的Google Dev帐户并获取扩展程序ID#
  2. 在Google API控制台中,使用扩展名ID注册一个OAuth ClientID#
  3. 更新您的Chrome扩展程序清单,以在OAuth ClientID#中包含“ oauth2”部分以及您允许的范围,并在“权限:”下包含“身份”
  4. 在Google API控制台中启用您选择的API并生成密钥。将此密钥包含在background.js文件中,以便可以使用API​​。

是否可以在不打包和上传我的应用程序的情况下执行此操作?控制台中的Oauth凭据页面要求提供Web Store URL

不,主要是因为您需要chrome扩展程序和API相互了解,并在某种意义上被“链接”在一起,以便它们可以安全并正常运行。不过,您仍然可以使用私人应用程序,因为您只需打包(.zip)并将其上传到开发人员信息中心,就可以通过不发布将其排除在公共Chrome商店之外。它可以永远停留在“草稿”阶段供您个人使用。

可以在扩展程序中存储Google api.js的副本,还是必须从https://apis.google.com/js/client.js加载它?如果是这样的话, 对于Chrome应用示例,如何从manifest.json中获取密钥?我已经看到诸如“将已安装manifest.json中的密钥复制到您的源清单中”的说明,但我不理解。

您无需在扩展程序中存储副本,您可以将以下内容添加到manifest.json中:

"content_security_policy": "script-src 'self' https://apis.google.com/; object-src 'self'"

,然后在popup.html的底部:

 <script src="https://apis.google.com/js/client.js?onload=onGAPILoad"></script>

如果没有指南,这是一个相当混乱的过程; here is the one最终对我来说意义非凡。这个official example from Google也是不错的选择。

有人知道完整的,独立的Chrome扩展程序示例吗?

“自包含”在此处有点棘手,因为清单需要引用您正在使用的OAuth ClientID和API专用的密钥,但是this(下载链接)以及上面的两个链接应该足以使您进入有效的扩展程序。