PHP调用TMDB API添加电影至Watchlist遇参数错误求助
解决TMDB API添加至Watchlist的参数无效问题
你的问题核心是把请求参数放到了HTTP请求头(headers)里,而TMDB的Add to Watchlist API要求这些参数作为JSON格式的请求体(request body)发送,并非请求头。
修正后的代码
$response = $client->request('POST', 'https://api.themoviedb.org/3/account/' . $account_id . '/watchlist', [ 'headers' => [ 'Authorization' => 'Bearer xxxxxkeyxxxx', 'accept' => 'application/json' ], 'json' => [ 'media_type' => 'movie', 'media_id' => $media_id, 'watchlist' => true ] ]);
修改说明
- 移除了请求头中的
content-type:使用Guzzle的json选项时,框架会自动设置正确的Content-Type: application/json请求头,无需手动添加 - 核心修正:将
media_type、media_id、watchlist三个参数从headers数组移至json数组,这部分数据会被自动编码为JSON格式的请求体发送给API - 确保
$account_id和$media_id为TMDB返回的有效数值ID,避免传入字符串或无效值
额外排查提示
- 确认你的Bearer Token已获得用户授权的
account:write权限,否则会返回权限不足错误 - 可以通过
var_dump($response->getBody()->getContents())打印API返回的详细错误信息,进一步排查其他潜在问题
内容的提问来源于stack exchange,提问作者robotu
相关产品推荐
相关产品推荐

