对 Upwork GraphQL API 进行 Google Apps 脚本调用时遇到问题

Trouble making Google Apps Script call to Upwork GraphQL API

提问人:Daniel Allen 提问时间:7/1/2023 最后编辑:Daniel Allen 更新时间:7/14/2023 访问量:140

问:

我正在尝试连接到 Upwork 的新 GraphQL API,有一段时间了。所有授权都已设置,响应为 200,但我收到此错误:

{“errors”:[{“message”:“FieldUndefined 类型的验证错误:'Query' 类型的字段 'user' 未定义 @ 'user'”,“locations”:[{“line”:2,“column”:6}],“extensions”:{“classification”:“ValidationError”}}]}

这是我的基本功能:

function getUpwork() {
  var service = getService("upwork");
  var url = "https://api.upwork.com/graphql";
  var payload = JSON.stringify({
    "query":
      `query {
     user { 
      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())
}

我只是想从 API 返回一些东西,但没有骰子。 此处的文档:https://www.upwork.com/developer/documentation/graphql/api/docs/index.html#query-user

谁能为我阐明这一点?几个月来,它一直在踢我的屁股。我已经尝试了大量的查询配置。

google-apps-script graphql urlfetch upwork-api

评论


答:

0赞 TheMaster 7/2/2023 #1

尝试添加到有效负载中,例如user

var payload = JSON.stringify({
    "query":
      `query user {
     user { 
      id 
      email 
      } 
    } ` });

或完全删除:query user

var payload = JSON.stringify({
    "query":
      `{
     user { 
      id 
      email 
      } 
    } ` });

并使用适当的案例:Bearer

"Authorization": `Bearer ${service.getAccessToken()}`,

评论

0赞 Daniel Allen 7/2/2023
谢谢你的建议!我尝试了两种有效负载变体,但错误响应相同(“FieldUndefined 类型的验证错误:类型为 'Query' 的字段 'user' 未定义 @ 'user'”)。
0赞 TheMaster 7/3/2023
@DanielAllen 您能否引用确切的错误,包括两个有效载荷的位置/行号?你改成了吗?bearerBearer
1赞 Daniel Allen 7/15/2023
是的,我将承载切换到承载者,看起来问题源于 Upwork 本身。
0赞 mnovozhylov 7/3/2023 #2

您的代码看起来可以正常工作。目前,公共 GraphQL 查询存在问题。团队意识到了这一点,并努力尽快修复它。 如果您有任何其他问题,请随时联系 Upwork 支持团队

Upwork对于给您带来的不便,我们深表歉意。

评论

0赞 Daniel Allen 7/15/2023
这已经是一个至少 6 个月的问题,知道什么时候会修复吗?
0赞 mnovozhylov 7/28/2023
它已经修复了。