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项目:
- 选择"部署为连接器",创建一个新的部署版本
- 在Data Studio中移除旧的连接器实例,重新添加
- 这时候你应该能看到Siteimprove用户名和token的输入框,而不是Google账号认证提示
输入有效的凭证后,连接器就能正常通过Siteimprove API的认证,不会再返回401错误了。
内容的提问来源于stack exchange,提问作者Jeroen Swets
相关产品推荐
相关产品推荐

