phpのfile_get_contents関数をPHPのcurl関数で書き変えたい
file_get_contents関数を使って書かれたコードをPHPのcurl関数で書き変えているのですが,
Warning: Illegal string offset 'access_token'というメッセージが出てtwitterのtweetを取得できません。解決方法が分かる方、回答をお願いします。
全体のコードのリンクです。https://github.com/sizaki30/TwitterAppOAuth/blob/master/TwitterAppOAuth.php
この方のサイトを参考にtweetを取得するサイトを作っています。
https://blog.apar.jp/php/3007/
curlで参考にしたサイトです。
https://qiita.com/Tamagoham119/items/0862d12743ddd8175d6d#%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B
https://qiita.com/shinkuFencer/items/d7546c8cbf3bbe86dab8
private function _getBearerToken($consumer_key, $consumer_secret){</p>
$oauth2_url = 'https://api.twitter.com/oauth2/token';
$token = base64_encode(urlencode($consumer_key) . ':' . urlencode($consumer_secret));
$request = array(
'grant_type' => 'client_credentials'
);
$header = [
'Content-type: application/x-www-form-urlencoded;charset=UTF-8',
'Authorization: Basic ' . $token,
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $oauth2_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request));
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response_arr = curl_exec($curl);
curl_close($curl);
return $response_arr['access_token'];//ここでWarning:が出る
}
public function get($api, $params = array())
{
$api_url = 'https://api.twitter.com/1.1/' . $api . '.json';
if ($params) {
$request = http_build_query($params, '', '&', PHP_QUERY_RFC3986);
$api_url .= '?' . $request;
}
$header = [
'Authorization: Bearer ' . $this->_bearer_token,
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $api_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request));
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response_json = curl_exec($curl);
curl_close($curl);
return $response_json;
}