【发布时间】:2021-04-07 00:08:14
【问题描述】:
我正在尝试从 Instagram 的基本显示 API 请求访问令牌,但它给了我这个错误:
{"error_type": "OAuthException", "code": 400, "error_message": "Missing required field client_id"}
这很奇怪,因为我提供了一个 client_id。这是我的代码:
$client_id = 'xxx';
$client_secret = 'xxx';
$redirect_uri = 'xxx';
if (isset($_GET['code'])) {
$code = $_GET['code'];
echo $code;
$url = 'https://api.instagram.com/oauth/access_token';
$data = array([
'client_id' => $client_id,
'client_secret' => $client_secret,
'grant_type' => 'authorization_code',
'redirect_uri' => $redirect_uri,
'code' => $code
]);
$curl = curl_init($url);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // to stop cURL from verifying the peer's certificate.
$result = curl_exec($curl);
curl_close($curl);
echo $result;
}else{
echo '<a href="https://api.instagram.com/oauth/authorize?client_id='.$client_id.'&redirect_uri='.$redirect_uri.'&scope=user_profile,user_media&response_type=code">connect your instagram</a>';
}
编辑:
当我在 Postman 中运行此测试时,如果我将数据放在参数中,我会得到同样的错误,但如果我将它放在 body / x-www-form-urlencoded 中它可以工作。这是为什么它不起作用的明确线索......
我做错了什么?
【问题讨论】:
-
cURL 发送
multipart/form-data,如果您将数组传递给CURLOPT_POSTFIELDS。
标签: php curl instagram instagram-api