You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Data Studio第三方Siteimprove连接器认证配置求助

解决Google Data Studio Siteimprove连接器无法调出第三方凭证输入界面的问题

我仔细看了你的代码和问题描述,发现有两个关键问题导致了这个情况:一是没有配置USER_TOKEN认证所需的输入字段,二是凭证验证函数的返回值不符合要求。下面一步步来修复:

1. 给getAuthType添加凭证输入字段定义

当使用USER_TOKEN认证类型时,你必须明确告诉Data Studio需要收集哪些凭证字段(比如用户名和token),否则它会默认走Google账号认证流程。修改后的getAuthType函数如下:

function getAuthType() {
  var cc = DataStudioApp.createCommunityConnector();
  return cc.newAuthTypeResponse()
    .setAuthType(cc.AuthType.USER_TOKEN)
    .setHelpUrl('http://developer.siteimprove.com/v1/get-access/')
    // 配置Siteimprove凭证的输入字段
    .setUserTokenParams([
      {
        name: 'username',
        displayName: 'Siteimprove 用户名',
        description: '你的Siteimprove账号用户名'
      },
      {
        name: 'token',
        displayName: 'Siteimprove API Token',
        description: '你的Siteimprove API访问令牌'
      }
    ])
    .build();
}

这里的setUserTokenParams是核心,它定义了需要用户输入的两个字段,Data Studio会根据这个配置渲染出对应的第三方凭证输入界面。

2. 修复validateCredentials函数的返回值与错误处理

你当前的validateCredentials直接返回了API响应对象,但isAuthValid和setCredentials需要的是布尔值(true/false)来判断凭证是否有效。另外,当API返回401时,UrlFetchApp.fetch会抛出异常,中断认证流程。修复后的函数如下:

function validateCredentials(userName, token){
  // 如果凭证为空直接返回无效
  if (!userName || !token) return false;

  var headers = {
    "Authorization" : "Basic " + Utilities.base64Encode(userName + ':' + token)
  };
  var params = {
    "method":"GET",
    "headers":headers,
    "muteHttpExceptions": true // 开启后错误响应不会抛出异常,而是返回响应对象
  };

  try {
    var response = UrlFetchApp.fetch("https://api.siteimprove.com/v2/", params);
    var statusCode = response.getResponseCode();
    // 只有状态码在200-299之间才视为凭证有效
    return statusCode >= 200 && statusCode < 300;
  } catch (e) {
    console.error("凭证验证失败:", e);
    return false;
  }
}

这里做了三个关键修改:

  • 添加muteHttpExceptions: true,避免401等错误直接抛出异常
  • 根据API响应的状态码返回布尔值,而不是原始响应对象
  • 增加了凭证为空时的提前退出逻辑

3. 重新部署并测试连接器

修改完代码后,需要重新部署你的Google Apps Script项目:

  1. 选择"部署为连接器",创建一个新的部署版本
  2. 在Data Studio中移除旧的连接器实例,重新添加
  3. 这时候你应该能看到Siteimprove用户名和token的输入框,而不是Google账号认证提示

输入有效的凭证后,连接器就能正常通过Siteimprove API的认证,不会再返回401错误了。


内容的提问来源于stack exchange,提问作者Jeroen Swets

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:51:20