Django中如何通过LinkedIn API获取作为变量的访问令牌并解决报错?
LinkedIn API Access Token 报错解决指南
手动复制Token报错的常见原因及解决
- 权限不匹配:你手动获取的Token可能缺少当前API请求所需的权限。比如调用用户资料接口却只申请了基础权限。解决:重新授权时勾选对应权限,确保
scope包含接口要求的字段(如r_liteprofile、r_emailaddress)。 - Token已过期:LinkedIn短期Access Token默认有效期60天,手动复制的Token可能已失效。且手动获取的无刷新机制,需重新授权。
- 请求格式错误:调用API时
Authorization请求头格式必须为Bearer {token},注意Bearer后有空格。示例正确请求头:GET https://api.linkedin.com/v2/me Headers: Authorization: Bearer YOUR_ACCESS_TOKEN Connection: Keep-Alive - 应用配置问题:LinkedIn应用后台的重定向URI必须与授权时使用的地址完全一致,否则Token无效。检查「Auth」->「Redirect URLs」配置。
程序内自动获取Token(OAuth2授权码流程)
手动复制Token易过期且易出错,建议用程序实现OAuth2授权码流程自动获取,示例以Python为例:
import requests # 替换为你的应用信息(从LinkedIn开发者后台获取) CLIENT_ID = "你的客户端ID" CLIENT_SECRET = "你的客户端密钥" REDIRECT_URI = "你的重定向URI" SCOPE = "r_liteprofile r_emailaddress" # 1. 生成授权链接,引导用户授权 auth_url = f"https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}" print(f"请访问以下链接完成授权:{auth_url}") auth_code = input("输入授权后URL中的code参数:") # 2. 用授权码换取Access Token token_url = "https://www.linkedin.com/oauth/v2/accessToken" payload = { "grant_type": "authorization_code", "code": auth_code, "redirect_uri": REDIRECT_URI, "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET } response = requests.post(token_url, data=payload) token_data = response.json() access_token = token_data.get("access_token") expires_in = token_data.get("expires_in") print(f"获取到的Access Token:{access_token}") print(f"有效期(秒):{expires_in}") # 3. 调用API示例 def get_user_profile(token): url = "https://api.linkedin.com/v2/me" headers = {"Authorization": f"Bearer {token}"} return requests.get(url, headers=headers).json() print("用户资料:", get_user_profile(access_token))
长期Token解决方案
若需长期有效Token,需为应用申请offline_access权限(需通过LinkedIn应用审核),获取Refresh Token后,可在Access Token过期时自动刷新,无需用户重复授权。
内容的提问来源于stack exchange,提问作者Larry Johnson
相关产品推荐
相关产品推荐

