使用Google Apps Script调用Upwork GraphQL API时遇字段未定义错误
解决Upwork GraphQL API提示Field 'user' in type 'Query' is undefined的问题
你的核心问题是GraphQL查询语句不符合Upwork API的规范,Query类型中不存在无参数的user字段,需根据需求调整查询逻辑:
两种正确的查询方式
1. 获取当前授权用户信息
使用viewer字段替代user,这是获取当前登录用户信息的标准入口:
function getUpwork() { var service = getService("upwork"); var url = "https://api.upwork.com/graphql"; var payload = JSON.stringify({ "query": `query { viewer { id email } } ` }); var headers = { "Authorization": `bearer ${service.getAccessToken()}`, "Content-Type": "application/json", }; var params = { "method": "POST", payload, headers }; var response = UrlFetchApp.fetch(url, params); Logger .log(response.getResponseCode()) .log(response.getContentText()) }
2. 查询特定用户信息
如果需要查询其他用户,必须给user字段传入userId参数:
function getUpwork() { var service = getService("upwork"); var url = "https://api.upwork.com/graphql"; var payload = JSON.stringify({ "query": `query { user(userId: "目标用户ID") { id email } } ` }); var headers = { "Authorization": `bearer ${service.getAccessToken()}`, "Content-Type": "application/json", }; var params = { "method": "POST", payload, headers }; var response = UrlFetchApp.fetch(url, params); Logger .log(response.getResponseCode()) .log(response.getContentText()) }
错误原因说明
根据Upwork GraphQL API定义:
viewer字段用于获取当前授权用户的信息,无需额外参数user字段是查询指定用户的接口,必须传入userId作为参数
你之前的查询既没有给user传参,也没有使用正确的viewer字段,导致API返回字段未定义的验证错误。
内容的提问来源于stack exchange,提问作者Daniel Allen
相关产品推荐
相关产品推荐

