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

PDGA API登录成功后请求数据返回403无权访问如何解决?

PDGA API 403错误解决方案

核心错误原因

  • Cookie拼接规则错误:PDGA要求身份Cookie格式为session_name=sessid,你将两个参数的顺序写反,导致身份凭证无效
  • 请求头结构不符合Google Apps Script要求:UrlFetchApp的所有请求头参数必须放到headers属性下,你直接将Cookie、Content-Type放在请求参数根节点,导致服务端无法读取到正确的头信息
  • 缺少必要的CSRF校验头:登录接口返回的token需要添加到后续请求头的X-CSRF-Token字段中,否则API会直接拒绝匿名访问
  • 登录请求payload未序列化:JSON格式的请求体需要先转为字符串,否则会默认以表单格式发送,服务端无法解析登录参数

修正后可运行代码

function apiLogin() {
  // 替换为你自己的PDGA开发者账号密码
  const Username = "your_username";
  const Password = "your_password";

  const LoginUrl = 'https://api.pdga.com/services/json/user/login';
  const LoginDetails = {
    'username' : Username,
    'password' : Password
  };
  const LoginRequest = {
    'method' : 'post',
    'headers': {
      'Content-Type' : 'application/json'
    },
    'payload' : JSON.stringify(LoginDetails)
  };

  const LoginResponse = UrlFetchApp.fetch(LoginUrl, LoginRequest);
  const LoginData = JSON.parse(LoginResponse.getContentText());

  const SessionID = LoginData['sessid'];
  const SessionName = LoginData['session_name'];
  const Tok = LoginData['token'];

  const playerFetchPar = {
    'method' : 'get',
    'headers': {
      'Cookie' : `${SessionName}=${SessionID}`,
      'X-CSRF-Token': Tok
    },
    'muteHttpExceptions': true
  };
  const PlayerResponse = UrlFetchApp.fetch('https://api.pdga.com/services/json/players?pdga_number=1',playerFetchPar);
  Logger.log(PlayerResponse.getContentText());
};

运行后即可在日志中看到PDGA编号为1的球员公开数据,后续可以根据需求修改接口参数拉取对应俱乐部的球员排名数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:24:05