instagram さんについて軽く調べたのでメモ。
- ユーザブロック機能とか、スパムユーザの報告機能があったのに気づいてなかった。アプリだと、ユーザの画面開いて右上の歯車っぽいアイコンから。
- 公開状態の切り替え機能があるけど、api でユーザのデータとってきても、その中に公開状態のデータがない。
- 公開状態は /users/{hoge さんの id}/relationships でとれる。
- target_user_is_private の値が 1 だったらプライベート、空文字だったら公開。
- 自分がプライベートかどうかは /users/self から自分の id を取得してから、/users/{自分のid}/relationships から取れる。
- /users/self/relationship みたいなのはなかった。めんどくさい。(あっても変わらない気がするけど。あったらあったで URL、それどうなのという感じするけど。)
instagram で遊んだスクリプトがこれ。
#!/usr/bin/perl use strict; use warnings; use Config::Pit; use LWP::UserAgent; use HTTP::Cookies; use URI; use URI::QueryParam; use JSON::Syck; my $config = pit_get('aerith.instagr.am', require => { username => 'your username', password => 'your password', access_token => 'your token on instagram' }); my $api_base = 'https://api.instagram.com/v1'; my $api_path = shift || '/users/self/feed'; my $agent = LWP::UserAgent->new(); $agent->cookie_jar(HTTP::Cookies->new); my $login_uri = URI->new('https://instagram.com/accounts/login/'); my $login = $agent->post($login_uri, { username => $config->{username}, password => $config->{password}, }); if ($login->is_redirect && $login->content eq '') { my $endpoint = URI->new($api_base.$api_path); $endpoint->query_param_append(access_token => $config->{access_token}); my $request = $agent->get($endpoint); print YAML::Syck::Dump(JSON::Syck::Load($request->content)); } else { print "Authentication failed."; } exit; __DATA__
アクセストークン取得はまた別の話。