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

使用LinkedIn-API调用Voyager API获取邀请状态遇400错误求助

问题

我使用linkedin-api库时遇到以下问题:希望通过API查看我发送的好友邀请是否被对方接受,具体是查询通过add_connection方法发送的邀请状态。我发现add_connection接口的响应头中存在Location参数,推测该参数对应新创建邀请数据的相对URL,但调用linkedin._fetch方法请求该URL时返回400错误(示例URL:/voyagerGrowthNormInvitations/7253503640567476224)。

相关代码如下:

import os
import requests
from dotenv import load_dotenv, find_dotenv
from linkedin_api.linkedin import Linkedin  
from linkedin_api.utils import helpers

dotenv_path = find_dotenv()
load_dotenv(dotenv_path)

# 验证变量获取
username = os.getenv("LINKEDIN_USERNAME")
password = os.getenv("LINKEDIN_PASSWORD")

linkedin_url_test = "https://www.linkedin.com/in/david-ralambofiringa-mba-99052937/"


### 创建客户端和脚本
cookies_dict = {
    'li_at': os.getenv("li_at"),
    'JSESSIONID': os.getenv("JSESSIONID"),
}    

cookies = dict_to_cookiejar(cookies_dict)

linkedin = Linkedin(username=username, password=password, cookies=cookies)

public_id = extract_public_id(linkedin_url_test)

profile = linkedin.get_profile(public_id=public_id)

# 获取用户URN_ID
profile_urn = profile.get("profile_urn")
profile_urn_id = helpers.get_id_from_urn(profile_urn);

connexion_request = linkedin.add_connection(profile_public_id = public_id, profile_urn =  profile_urn)

if connexion_request.status_code == 201:
    # 访问创建的资源URL
    location_relative_url = connexion_request.headers.get("Location")
    ressource = linkedin._fetch(location_relative_url)

print("ressource = ",ressource.content,ressource.text, ressource.json())


def extract_public_id(linkedin_url):
   
    if not linkedin_url:
        return None
    
    if "https://www.linkedin.com/in/" in linkedin_url:
        
        public_id = linkedin_url.split("/in/")[-1]
        
        public_id = public_id.rstrip('/')
        return public_id
    return None

def dict_to_cookiejar(cookie_dict):
    jar = requests.cookies.RequestsCookieJar()
    for key, value in cookie_dict.items():
        jar.set(key, value)
    return jar

解决思路

  • 补充必要请求头:LinkedIn的Voyager API接口通常需要特定请求头才能响应,比如X-Restli-Protocol-Version(常用值2.0.0),尝试在调用_fetch时添加该头:
    ressource = linkedin._fetch(location_relative_url, headers={"X-Restli-Protocol-Version": "2.0.0"})
    
  • 修正URL路径:部分Voyager接口需要在相对URL前添加/api前缀,修改路径后再调用_fetch:
    full_url = f"/api{location_relative_url}"
    ressource = linkedin._fetch(full_url)
    
  • 验证Cookie有效性:检查li_at和JSESSIONID是否过期,重新登录获取最新cookies后再测试。
  • 使用库内置方法查询:查看linkedin-api库是否提供get_sent_invitations这类获取已发送邀请列表的方法,通过遍历列表匹配目标用户的邀请状态,比直接调用私有方法_fetch更稳定。
  • 确认请求方式:部分LinkedIn接口对请求方式有要求,尝试明确指定GET方式调用_fetch:
    ressource = linkedin._fetch(location_relative_url, method="GET")
    
  • 添加延迟查询:邀请创建后可能存在异步同步延迟,在调用_fetch前添加几秒延迟再请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:41:16