Authentication 应用程序脚本webapp:如何验证bigquery?

Authentication 应用程序脚本webapp:如何验证bigquery?,authentication,google-apps-script,google-bigquery,Authentication,Google Apps Script,Google Bigquery,我试图让我的应用程序脚本webapp以“访问webapp的用户”的身份执行,但它的bigquery应该以开发人员我的身份运行。(如果我以自己的身份运行webapp,一切都会正常运行…)我查看了网站上的文档。没有应用程序脚本示例,所以我尝试让javascript示例正常工作 <html> <head> <script src="https://apis.google.com/js/client.js"></script> <script src

我试图让我的应用程序脚本webapp以“访问webapp的用户”的身份执行,但它的bigquery应该以开发人员我的身份运行。(如果我以自己的身份运行webapp,一切都会正常运行…)我查看了网站上的文档。没有应用程序脚本示例,所以我尝试让javascript示例正常工作

<html>
<head>
<script src="https://apis.google.com/js/client.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>

  function auth() {
    gapi.auth.authorize(config, function() {
        gapi.client.load('bigquery', 'v2');
        $('#client_initiated').html('BigQuery client authorized');
        $('#auth_button').fadeOut();
        $('#dataset_button').fadeIn();
    });
  }

  // User Submitted Variables
  var projectNumber = 'XXXXXXXXXX';
  var clientId = 'XXXXXXXXXX.apps.googleusercontent.com';

  var config = {
    'client_id': clientId,
    'scope': 'https://www.googleapis.com/auth/bigquery'
  };

  function listDatasets() {
    var request = gapi.client.bigquery.datasets.list({
      'projectId':projectNumber
    });
    request.execute(function(response) {
        $('#result_box').html(JSON.stringify(response.result.datasets, null));
    });
  }
</script>
</head>
<body>
<button id="auth_button" onclick="auth();">Authorize</button>
<div id="client_initiated"></div>
<button id="dataset_button" style="display:none;" onclick="listDatasets();">Show datasets</button>
<div id="result_box"></div>
</body>
</html>

函数auth(){
gapi.auth.authorize(配置,函数(){
load('bigquery','v2');
$(“#客户端已启动”).html('BigQuery客户端已授权');
$(“#验证按钮”).fadeOut();
$(“#数据集_按钮”).fadeIn();
});
}
//用户提交的变量
var projectNumber='xxxxxxxxx';
var clientId='xxxxxxxxx.apps.googleusercontent.com';
变量配置={
“客户端id”:客户端id,
'范围':'https://www.googleapis.com/auth/bigquery'
};
函数listDatasets(){
var request=gapi.client.bigquery.datasets.list({
“projectId”:projectNumber
});
请求.执行(函数(响应){
$('#result_box').html(JSON.stringify(response.result.datasets,null));
});
}
授权
显示数据集
我生成了一个客户端id作为浏览器应用程序,作为服务器地址。使用上面的代码,我得到了以下错误:无法读取未定义的属性“authorize\m\uuuuuu”

我的问题有两个:1)应用程序脚本webapp的身份验证方式是否与javascript应用程序的身份验证方式相同?例如,我可以将该代码用作我的应用程序脚本的指南吗


2)关于如何调试javascript示例代码有什么建议吗?请注意,我将此代码作为应用程序脚本webapp运行。。。。这可能是个错误……

答案是。。。或解决方法的答案如下所示:

我可以使用两阶段身份验证来代替直接身份验证:用户以自己的身份登录,我获取用户名以查找他们的文件,然后切换到使用BigQuery和execs作为开发人员的webapp


在应用程序脚本下进行高级服务身份验证的一个很好的解决方法……

继续讲述这个故事:看起来授权必须通过服务器,即使在使用应用程序脚本时也是如此:
如果你的应用程序是可公开访问的在线仪表板,你需要通过服务器端应用程序安全地代理请求,例如谷歌应用程序引擎应用程序。BigQuery查询必须对特定项目收费,因此Google App Engine应用程序应该跟踪所提出的请求,以确保它们代表您的应用程序的合法使用。
这似乎有些奇怪,因为交易功能可以完全隐藏,因此秘密可以秘密传递。