LoginSignup
2
1

More than 3 years have passed since last update.

LaravelでQiita APIを使用し投稿した記事を取得してみた

Posted at

目的

Qiitaから投稿記事のタイトルとURL、投稿日の取得。(下記サイトのように使用しました。)
http://kudohayatoblog.com/blog_top

アクセストークンの取得

下記ページで「新しくトークンを発行する」からトークンを発行。
https://qiita.com/settings/applications
※今回は書き込みをしないので、「read_qiita」を選択。

API通信

今回はcURLを使用した方法と、GuzzleHttpを使用した方法を紹介します。

cURLでの通信

$token = '取得したアクセストークン';
$curl = curl_init('https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=10');
   $option = [
       CURLOPT_CUSTOMREQUEST => 'GET',
       CURLOPT_RETURNTRANSFER => true,
       CURLOPT_HTTPHEADER => [
                'Authorization: Bearer '.$token,
                'Content-Type: application/json',
            ],
        ];
curl_setopt_array($curl, $option);
$result = curl_exec($curl);
$decode_res = json_decode($response_body);

↑で取得できたので、後はforeachなどで取得できます。

foreach ($decode_res as $res_data) {
     $url = $res_data->url;  //urlの取得例
}

GuzzleHttpでの通信

下記コマンドでGuzzleのインストール。

composer require guzzlehttp/guzzle
use GuzzleHttp\Client;

$client = new Client;
$token = '取得したアクセストークン';
$result = $client->request('GET', 'https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=10', [
    'headers' => [
        'Authorization' => 'Bearer '.$token,
        'Accept' => 'application/json',
    ],
]);
$response_body = (string) $result->getBody();
$decode_res = json_decode($response_body);

先ほどと同様foreachなどで取得できます。

foreach ($decode_res as $res_data) {
     $url = $res_data->url;  //urlの取得例
}

最後に

API認証について、Laravelの公式ドキュメントでは以下のように記載されていますが、ここの$clientが何なのかよくわからなかったのでGuzzleを使用しました。
わかる人がいれば教えてください!

$response = $client->request('POST', '/api/user', [
    'headers' => [
        'Authorization' => 'Bearer '.$token,
        'Accept' => 'application/json',
    ],
]);
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1