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

AWS Lambda执行Stack Exchange OAuth PKCE流程遇Cloudflare验证问题

Stack Exchange OAuth 2.0 PKCE流程AWS Lambda调用失败问题

我在AWS Lambda函数中实现Stack Exchange OAuth 2.0 PKCE流程,用完全相同的参数在Postman测试时,token交换能正常完成,但通过Lambda调用却失败了。

Lambda函数代码如下:

export const handler = async (event) => {
  try {
    const body = typeof event.body === "string" ? JSON.parse(event.body) : event.body ?? {};
    
    const code = body.code;
    const codeVerifier = body.code_verifier;
    const redirectUri = body.redirect_uri;
   
    
    const params = new URLSearchParams({
      client_id: String(process.env.STACKEXCHANGE_CLIENT_ID),
      client_secret: String(process.env.STACKEXCHANGE_CLIENT_SECRET),
      redirect_uri: redirectUri,
      code_verifier: codeVerifier,
      code: code
    });

    const tokenResponse = await fetch("https://stackoverflow.com/oauth/access_token/json", {
      method: "POST",
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/json',
      },
      body: params.toString()
    });

    const contentType = tokenResponse.headers.get("content-type");
    
    if (contentType && contentType.includes("application/json")) {
      const data = await tokenResponse.json();
      return response(200, { access_token: data.access_token });
    } else {
      const text = await tokenResponse.text();
      console.error("Non-JSON response:", text);
      return response(tokenResponse.status, {
        error: "Non-JSON response from StackOverflow"
      });
    }
  } catch (err) {
    return response(500, { error: err.message });
  }
};

调用Lambda时,没有收到预期的JSON响应,反而得到一个Cloudflare机器人防护验证页面,页面开头内容如下:

<!DOCTYPE html>
<html lang="en-US">
<head>
  <title>Just a moment...</title>
  ...
</head>

我已经尝试过以下方案:

  • 添加多种User-Agent请求头
  • 添加Accept-Encoding和Accept-Language请求头
  • 验证所有参数均正确无误(在Postman中可正常工作)
  • 检查环境变量已正确配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 18:05:05