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

按建议修改后仍遇invalid grant type错误,求PHP Curl解决办法

解决Foursquare OAuth的"invalid grant type"错误

看起来你在处理Foursquare的OAuth授权流程时,卡在了获取token的步骤,反复遇到invalid grant type错误,而且已经怀疑是URL编码或者请求格式的问题对吧?我来帮你梳理下可能的问题点和修复方案。

常见导致该错误的核心原因

  • 未明确指定grant_type参数,Foursquare要求必须设置为authorization_code
  • 请求的Content-Type设置错误,或者参数未按application/x-www-form-urlencoded格式传递
  • 参数未做URL编码,尤其是redirect_uri或code包含特殊字符时
  • 请求方式错误,获取token必须用POST而非GET

针对你的代码的修复建议

你提供的代码片段有截断,我帮你补全并修正关键问题点:

<?php
$client_id = '你的客户端ID';
$redirect_uri = 'http://website.com/foursquare2.php';
$client_secret = '你的客户端密钥';
$code = $_REQUEST['code'];

// 准备请求参数,必须包含grant_type
$postData = http_build_query([
    'grant_type' => 'authorization_code',
    'client_id' => $client_id,
    'client_secret' => $client_secret,
    'code' => $code,
    'redirect_uri' => $redirect_uri
]);

$ch = curl_init();
// 确保指向Foursquare正确的token端点
curl_setopt($ch, CURLOPT_URL, 'https://foursquare.com/oauth2/access_token');
// 指定为POST请求
curl_setopt($ch, CURLOPT_POST, true);
// 传递编码后的参数
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
// 设置正确的Content-Type头(http_build_query已自动处理编码,也可省略此头,curl会自动识别)
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
// 让curl返回响应内容而非直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

// 打印响应排查问题
var_dump($response);
?>

额外调试建议

如果还是报错,可以开启curl的调试模式,查看完整的请求细节,确认参数和头部是否正确发送:

// 在curl_exec前添加以下代码开启调试
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verboseLogFile = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verboseLogFile);

// 执行请求后读取调试日志
rewind($verboseLogFile);
$verboseContent = stream_get_contents($verboseLogFile);
echo "调试日志:\n" . $verboseContent;
fclose($verboseLogFile);

另外要注意:redirect_uri必须和你在Foursquare开发者后台设置的授权回调URI完全一致,包括HTTP/HTTPS协议、路径、甚至末尾的斜杠都不能差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:54:12