【问题标题】:Is it OK to publicise my Google/OAuth key?可以公开我的 Google/OAuth 密钥吗?
【发布时间】:2021-10-21 03:30:20
【问题描述】:

我更新了从 Google 表格获取数据的 Google 表格导入实用程序,以便它可以与 RGraph 一起使用(因此它现在使用 v4 API)。

这个新 API 似乎需要 OAuth API 密钥。如果你问我,这有点让人头疼。

可以在网站上发布此 OAuth 密钥吗?喜欢这个页面的源代码吗?

https://www.rgraph.net/tests/canvas.bar/sheets/sheets.html

如果不是,那么像这样的基于 JavaScript 的导入实用程序将如何工作?

在该页面上创建的图表的源代码是:

<script>
    new RGraph.Sheets(
        'AIzaSyDCODMgxGo6q4qgkw8haCwXr__8d5r7IIg',      // OAuth key
        '1ZV79XGR0bkNmFoiQmipA-kXAujyXLsSaeHetfOrPTHA', // Spreadsheet key
        myCallback
    );

    new RGraph.Sheets(
        'AIzaSyDCODMgxGo6q4qgkw8haCwXr__8d5r7IIg',      // OAuth key
        '1ncvARBgXaDjzuca9i7Jyep6JTv9kms-bbIzyAxbaT0E', // Spreadsheet key
        'Bar chart',
        myCallback2
    );




    //
    // First charts callback
    //
    function myCallback (sheet)
    {
        var data   = sheet.get('a1:a4');
        var labels = sheet.get('b1:b4');

        bar = new RGraph.Bar({
            id: 'cvs',
            data: data,
            options: {
                xaxisLabels: labels,
                marginInner: 35
            }
        }).wave();
    }

    //
    // Second charts callback
    //
    function myCallback2 (sheet)
    {
        var data = sheet.get('b2:c13');

        bar = new RGraph.Bar({
            id: 'cvs2',
            data: data,
            options: {
                xaxisLabels: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
                backgroundGridVlines: false,
                backgroundGridBorder: false,
                xaxis: false,
                yaxis: false,
                colors: ['red', 'black']
            }
        }).wave();
    }
</script>

【问题讨论】:

    标签: javascript oauth


    【解决方案1】:

    我现在有两个键:

    1. 我的网站有一个 API 密钥,它受引荐来源网址限制,也仅限于 Sheets API
    2. 我有另一个密钥,仅用于分发在可下载 zip 文件中的演示(因此任何人都可以在他们的网站或本地计算机上运行这些演示)。如果它被滥用并删除旧的,我总是可以重新生成。这也仅限于 Sheets API。

    【讨论】:

      【解决方案2】:

      您不应在项目文件中提及 ANY API KEY。 我会说,使用 .env 来维护这样的密钥。 webpack 或任何其他打包程序将确保它(密钥)不会暴露。

      【讨论】:

      • 这是在网页中运行的 JavaScript - 因此 OAuth 密钥必须是公开的 - 即在页面中或在页面包含的库文件之一中。都是明文。
      • @Richard 您可能应该向 PHP 发出 (AJAX) 请求以获取所需的数据。然后在 Javascript 中使用数据。我认为从服务器端检索您的数据然后在前端使用它是正常的。
      • 那肯定行得通。我也有一个基于 PHP 的 Google Sheets 连接器,它可以帮助实现这一点:rgraph.net/canvas/… 对于我与我的软件 zip 存档(人们可以在他们自己的台式计算机上运行)一起分发的一些演示页面,它们也不会真正起作用好吧——除非他们打电话给网站来获取数据——我不太喜欢这个主意。我在下面的回答详细说明了我所做的事情(多个 OAuth API 密钥)
      猜你喜欢
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2013-03-24
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      相关资源
      最近更新 更多