55
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pixivのAPIにアクセスする

Last updated at Posted at 2015-05-14

はじめに

2015年5月12日くらいにpixivのAPIが変わったようです。旧来のやり方だとログインすることができなくなっているため、ちゃんとした方法でログインする必要があるようです。

ところが、pixivは公式APIを公開していません。新しい方法をWEBで検索しても、まだ整理して掲載されているページも見当たらず。とりあえず、自分用のメモとして記録していこうと思います。

PHPのコード

ログインしてトークンを取得する。

login.php
require_once 'HTTP/Request2.php';

$request = new HTTP_request2();

//SSLの検証を無視
$request->setConfig( array(
	'ssl_verify_host'	 => false,
	'ssl_verify_peer'	 => false,
) );

//リクエストのヘッダ設定
$request->setHeader( array(
	'Referer'	 => 'http://www.pixiv.net/',
	//'User-Agent'	 => ’’ //必要かも?,
	'Connection' => 'close'
) );

//メソッドはPOSTで
$request->setMethod( HTTP_Request2::METHOD_POST );

//各種パラメータ
$request->addPostParameter( 'username', PIXIV_ID );
$request->addPostParameter( 'password', PIXIV_PW );
$request->addPostParameter( 'grant_type', 'password' );
$request->addPostParameter( 'client_id', "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ); //iOS Client ID
$request->addPostParameter( 'client_secret', "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ); //iOS Client Secret

try {
	$response = $request->setUrl( 'https://oauth.secure.pixiv.net/auth/token' )->send();

	$cookies = json_encode( $response->getCookies() );
	file_put_contents( './cookies.txt', $cookies );
	
	file_put_contents( './body.txt', $response->getBody() );
	
} catch ( HTTP_Request2_Exception $e ) {
	var_dump( $e );
}
exit;
?>

取得したクッキーをprint_r

valueに表示されたセッション情報を使う。有効期間は3600秒。

cookies.txt
Array
(
    [0] => Array
        (
            [expires] => Fri, 01-May-2015 00:00:00 GMT
            [domain] => .pixiv.net
            [path] => /
            [secure] => 1
            [name] => PHPSESSID
            [value] => 99999999_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            [max-age] => 3600
        )

)

取得した本文(Body)

  • jsonで帰ってくる。
  • 帰ってきた access_token を使う。

イラスト情報の取得方法

  • https://public-api.secure.pixiv.net/v1/works/xxxxxx.json 。xxxxxxはイラスト番号。
  • ログイン時のセッションデータとaccess_tokenが必要
  • 閲覧数やポイント数は取得できなくなっている様子。(パラメータが必要なのかもしれない)

その他

参考サイト

55
57
1

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
55
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?