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

调用LinkedIn分享帖子API返回401未授权,求排查方案

解决LinkedIn Post API在Supabase边缘函数中返回401 Unauthorized的问题

先修正你已经发现的代码错误,给出可运行的正确示例,再排查其他可能导致401的原因:

一、修正核心代码错误

你提到的两个代码问题是直接诱因,先把它们修复:

import axios from 'axios';

export default async function(req) {
  // 从请求体获取前端传入的accessToken
  const { accessToken } = await req.json();
  const linkedInApiUrl = 'https://api.linkedin.com/v2/ugcPosts';

  try {
    // axios.post的参数顺序:url、请求体、配置项(含headers)
    const postResponse = await axios.post(linkedInApiUrl, {
      // 符合LinkedIn UGC Post规范的请求体
      "author": "urn:li:person:你的个人ID", // 替换为实际的person URN
      "lifecycleState": "PUBLISHED",
      "specificContent": {
        "com.linkedin.ugc.ShareContent": {
          "shareCommentary": {
            "text": "测试发布的LinkedIn帖子内容"
          },
          "shareMediaCategory": "NONE"
        }
      },
      "visibility": {
        "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
      }
    }, {
      // headers必须放在第三个config参数中,而非请求体
      headers: {
        'Authorization': `Bearer ${accessToken}`, // 使用传入的accessToken而非未定义的token
        'Content-Type': 'application/json',
        'X-Restli-Protocol-Version': '2.0.0' // LinkedIn V2 API强制要求的协议头
      }
    });

    // 直接访问response的data属性,而非调用data()方法
    return new Response(JSON.stringify(postResponse.data), { status: 200 });
  } catch (err) {
    const errorMsg = err.response?.data || err.message;
    return new Response(JSON.stringify({ error: errorMsg }), { status: err.response?.status || 500 });
  }
}

二、排查其他导致401的潜在原因

如果代码修正后仍返回401,检查以下几点:

  • 权限范围(Scope)缺失:授权流程中必须请求w_member_social(个人账号发帖)或w_organization_social(企业账号发帖)权限。如果授权时没加这个scope,即使token有效,也没有发帖权限。
  • Author URN格式错误:author字段必须是正确的URN格式,个人账号为urn:li:person:XXX,企业账号为urn:li:organization:XXX。可以调用https://api.linkedin.com/v2/me接口获取当前用户的person URN,确保填写正确。
  • Supabase边缘函数网络策略:确认Supabase边缘函数允许访问api.linkedin.com域名,部分边缘环境会限制对外请求,需要在Supabase控制台检查网络规则。
  • Token受众不匹配:确保生成token时使用的客户端ID/密钥,与你在LinkedIn开发者平台创建的应用完全对应,错误的凭证会导致token权限无效。
  • API版本或端点错误:确认使用的是LinkedIn V2 API的ugcPosts端点,而非旧版的shares端点,旧版端点已逐步废弃。

关于SDK返回426错误的说明

426(Upgrade Required)通常是因为SDK版本过旧,或SDK默认使用了非HTTPS请求,建议直接用axios等轻量HTTP库手动调用API,兼容性和可控性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:57:11