twitter Facebook mixi
今週の、打ち合わせというのか飲み会で、twitterやってる?facebookは?mixi?という話題も。
昔女の子だった方々に意外に不評だったのがmixi、それもmixiの売りだったはずの「あしあと機能」これがあるからmixiは伸びたと思ったんだけどなあ(あと当然、アダルトコミュ)元カレのところを踏んでしまった、とか、あまり関わりたくないのについ踏んで、とか。踏み返されたりメッセージが飛んできたりするのが嫌だ、と。その点、facebookはいい、んだそうだ。毎日facebookにン時間は費やしてるとのこと。
もうすっかりおっさんの半分オタクな男連中は、facebook の作り笑い的な無理矢理のリア充演技が耐えられない、と。普段牛丼食ってるくせに、たまにオサッレなカフェで食ったイタ飯(大きな皿の中央に、皿の直径の1/5程度しか中身が入っていない料理)の写真をのせて得意顔、とか。たしかにその通りで、わたしも、facebookは、なんかうさんくさいウソ臭い、という印象。
わたしはtwitterが今のところ一番気楽でいいんだけど、女子たちは誰が見てるかわからないから怖いという。あれ?キミら、さっきmixiのあしあとが嫌だとかいってなかったっけか。
自分の場合。
まずtwitterをチェック。という生活習慣。自分好みの2ch、みたいなもんだし
Facebook は、いまだに何がいいんだかよくわからない。
mixiは、終わったと思ってたんだけど、意外にまだ頑張ってる。ので、実際の顔見知り以外のマイミクを外して、公開範囲をを絞って使うことにした。
最近、LINEがスゲー、次はLINEだ、もしかするとfacebookを食うのはこれではないか、とWEB界隈が騒がしい。
よくわからないまま、それなら試しにインストールしてみた。
今週飲んだ元同僚や、今の知り合いなど、身近にすでに使ってるひとがいるのに驚いた、かも。あちこちに「購入ボタン」がある印象なので、間違えて購入しないように気をつけながら使ってみる。
[11/20 08:14:01] 追記。kindleやiTunesで展開中。これはこれで、なかなか面白いものです。
・ アマゾン kindleストアに並べた電子書籍のリスト
手前味噌だけど、ホラーや青春もの、癒しの物語などオススメできます。短編だと100円からあるので、気楽に読んでみてやってください。
こちらはiPhone電子書籍アプリ 「小説同人誌Select」
https://itunes.apple.com/jp/app/id546230414?mt=8
小説同人誌Selectというこのアプリは無料で、中に有料の小説が収録されてます。無料サンプルもあるので、まずは立ち読み感覚でダウンロードして、気に入ったらその作品を購入してもらえるととてもうれしいです。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
mixi graphの日記APIで写真つき投稿
先日mixiの日記に投稿するスクリプトを作ったんだけど(「次はmixiのgraph APIから」 https://t2aki.doncha.net/?id=1339828183)これはとりあえず本文だけの投稿で、本文をjsonにしてリクエストしている。
でも、せっかくなので、写真付きの日記も投稿できるようにしてみた。
OAuthのやりとり、access_token や refresh_token の取得などは前回の記事と同じなので、ここでは省略。
perl の lwp を使って multipart/form-data をリクエストするところのメモ。
バウンダリや、文字のエスケープなど、いろいろ考えなきゃいけないことがあって、LWP::UserAgent と HTTP::Requestだけで自作するのはよくわからんなあ、と眺めたり検索すると HTTP::Request::Common というのを使うのが定番だと。さすがperl、欲しいものはちゃんとある。感謝。
てことで
例によってこんだけでOK。
content-type も access_token も、ここで指定するとちゃんと header に入っている。
ちょっとハマったのがPOSTの書き方。対象URLに実際にリクエストするのは、いろいろなケースがあってリクエストするものが違う。リクエストを生成するところとは別、実際に対象URLにリクエストするのは一カ所にした方がコードのメンテがしやすい。
でも、リクエストを生成しようと POST URL ... を入れるとこの時点で対象URLにリクエストしてしまう。
「LWP::UserAgent の post(...) メソッドは$ua->request(POST ...) への ショートカットとして存在しています。」
ということで、POSTと書くと飛んでいってしまう。
なので、
use HTTP::Request::Common qw(POST);
と、Common の POST を使うことを指定して、POSTと書いてもリクエスト生成だけですよ、ということに。
写真の枚数とか画像ファイルの存在チェックなどは、ここにつけたし。
perl最高っす!
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
次はmixiのgraph APIから
twitterは気楽なヨタネタ放言。少し長く書くときは、この雑記帖。facebookとmixiが絶賛放置となる。なので、この雑記帖の駄文たわごとをfacebookとmixiに投稿できればいいよな、ということでここんとこgraph APIというのをお試し中。
facebookは先日作ったので、今日はmixiの日記へmixi graph APIで投稿。
mixiの認証は facebookと同じOAuth2.0。くどく繰り返しておく(忘れっぽいんで)
一次情報はここ https://developer.mixi.co.jp/
1
アプリ登録時に取得して使うことになるのが
consumer key と consumer secret (と、自分で登録したアプリのURL)
2
code を取得するために、consumer key をパラメータにぶら下げて指定URLにGETでリクエストする
ユーザーはmixiの承認ページに。scopeのw_diary は日記への投稿権限
※facebookはrespone_typeというのは不要だったな
3
2で問題なければ・承認されば、自分で登録したアプリにcodeを持ってリダイレクトしてくる
URL?code=XXXXXXXXXXXXX
4
codeを取得したら、次は access token と refresh token を取得するために以下をPOSTのボディに入れて指定URLにリクエスト(POST)する。
※lwp のパラメータ content-type に、application/x-www-form-urlencoded を指定。
※facebookはここもGETだった。
以上で、access token と refresh token が取得できる(twitterのOAuth1.0とかamazon の認証だと、こちらでパラメータを暗号化したりする必要があるので、2.0はラクチン、かも)
mixiとfacebookで違うのが。
facebookだと、access token が永続で使えるんだけど、mixiは有効期限が短い。その分、refresh token というのがある、らしい。
↓access token の有効期限が切れてるよ
↓refresh token を使って access token を取得しなおしてね
ということになる。refresh token の有効期限は、現状だと3か月+α?
セキュリティのためだろうけど明らかに2度手間。access token が使えるかどうか確認して、使えなかったらrefresh token を使って再取得。だったら、最初からaccess token は、refresh token を使って取得する。ということにした。手元に保存して使う refresh token が期限切れになったら、また手作業で設定しなおす。
5
refresh token で access token を取得しなおす
access tokenを取得したURLと同じURLに以下のパラメータを本文にしてPOSTする
grant_type は refresh_token。これで access token を再取得する。
mixi日記への投稿
写真つきを multipart/form-data で投稿することも可能だけど、今回は、この雑記帖へリンクするので、本文だけでいい。
lwpの content-typeパラメータを application/jsonに。以下のJSON形式で本文を投稿する。
わたしのmixi日記は友人限定なので、privacyのvisibilityをfriendsに。
facebookは投稿する本文に access token をつけるが、mixiはheader部分につける。
とりあえず。これで、facebook も mixiも graph APIを利用して、wallや日記に投稿できるようになった、かな。同じOAuth2.0でも本文に入れたりヘッダに入れたり、tokenの期限があったりなかったり、微妙に違うのが注意が必要。
[07/03 11:35:45]
写真つき投稿の記事はこちら→ 「mixi graphの日記APIで写真つき投稿」
わたしは、気楽なtwitterと、閑散とした辺境のこの雑記帖で十分。
今回 facebookとmixiを改めて眺めた感想。
facebook はわからない。プライバシー設定が信用できない。データをどう使われてるか気持ち悪いところがある。企業ページが充実しているけど、金になってんのかね。アプリをクリックして何が起こるのかわからないので、臆病もののわたしはクリックできない。
全般いろんなところが「わからない」ので使えないんだよなあ。
mixiは最近残念だと思ってたのに、今回改めて見るとページや機能はかなり頑張ってるように見える。今さら。「あしあと」はリアルタイムで見えたからこそ、ユーザーが自分で公開や発言コントロールできる安心感。コミュニティは2chでいうスレ立てで、ひとりのユーザーが気楽に掲示板を持つことができるのは目玉だったような気がする。なんでわかりにくく使いにくくなったんだろう。あしあともコミュニティもユーザーの要望を取り入れて今のカタチになったんだろうけど、ユーザーの声を聞きすぎててんこ盛りのカオス、右往左往になってんじゃないのか。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
facebookのウォールに投稿するアプリ
使い勝手がよくわからないし、プライバシーというか公開範囲もよくわからないし、妙にうっとーしーオススメされるので、すっかり放置のfacebook。正直なところ、なんか胡散臭くて、魅力を感じないんだけど、ユーザー数を考えるとちょっと調べておいたほうがいいような気がした。
で、この雑記帖のRSSをwallに投稿できればいいなあ、と。有名どころの、facebook graffitiというのを試したところ、反映されない。投稿されない。設定をいじっても沈黙したままで使いものにならない(たぶん、わたしの設定が悪い)
しょうがないんで、自作の方向で。facebookのAPIを触ってみるいい機会だ。
https://developers.facebook.com/apps
アプリを登録するために、携帯電話のメールアドレスかクレジットカードで本人認証が必要。それ以外は twitterのアプリと似たようなもんだ。WEBアプリとして登録。ドメインやアプリの名前、アプリのURLなどを入力して、アプリの app_id app_secret が管理画面で確認できる。
後は、facebookの、認証するためのURLにGETでリクエスト。レスポンスに含まれるパラメータでまたGETして、と。OAuthのやりとりは、OAuth1.0Aのtwitterより、OAuth2.0のfacebookの方が簡単、かもしれない。
具体的でわかりやすい解説は、ほかのページがたくさんあるので、検索してください。
ここでは。
facebookが用意してるSDKはPHPとJavascript。わたしが多少なりとも使えるのはperl。SDKがないので、perlでベタベタ書いていったメモ。(さらについでにいうと、CPANにはfacebookのモジュールがあるので、それを使った方がいい)
とりあえず。facebookの自分のwallにpost、投稿できるまでを忘れないうちに。
access tokenさえ取得してしまえばOK。
その1.コードを取得する
APP_ID、URLは、アプリ登録した時の管理画面に表示されている。
コンマ区切りのパラメータscope。
・publish_stream、wallに書き込む権限くださいね。
・offline_access、access tokenの期限を無期限にしてくださいね。
ということらしい。
[08/28 10:35:26] offline_access は2012/7/5で廃止になった。記事最後に代替手段追記
上記URLにアクセスすると、facebookの、このアプリを使いますか、というページに行くので、そこで承認=OKすると、facebookから、URLにコードをつけて返ってくる。
URL?code=CODECODECODE
その2.access tokenを取得する
1で取得したコードと、アプリ登録時に取得するapp secretをパラメータに追加して、上記URLにアクセスする。
8行目、その2で作ったURLにアクセス。問題なければ、レスポンス=htmlの中に、access_tokenが入っているのでそれをメモる。(今回は、自分のブログ記事を流すことが目的なので、そのままaccess token を使う)
ウォールに投稿するには
https://graph.facebook.com/USER_ID/feed ※
というURLにPOSTすることになる。ここでちょっとハマる。USER_IDなんてこれまでの過程で一度も出てきてない。取得した access token を使って USER IDを取得する必要があった。
access token をパラメータにつけてアクセスするとJSON形式でデータが返ってくる。その中に user idという項目があるので、それをメモる。
使ったもの必要なものは以下。
アプリ登録時取得 app_id app_secret
OAuthで取得 code access_token
APIで取得 user_id
※のURLに対して、POSTで本文を投稿する。
本文に最低限必要なのは access_tokenとmessage。(その他のパラメータには、link name caption description picture などがある)
access_token=ACCESS_TOKEN&message=URLENCODE(message)という形式。
これで投稿ができるようになった。ブログの最新記事をfacebookのウォールに投稿するには、本文を適当に整えるだけ。あとでやっつけてしまおう。
SDKがあるので、モバイルアプリも頑張れば作れる、ような気がする。でもなあ、facebookってどうも信用できんのだ。
[08/28 10:35:26]
追記
offline_access を指定することで access token の有効期限は永続的だったが、2012/7/5にoffline_accessが廃止となって、access_token の有効期限をチェックしなきゃいけなくなった。
詳しくは以下のURL(ありがとうございます!)
https://appofit.com/facebook/remove_offline_access/
ウチは、ユーザー権限で何かするわけでもないので、有効期限が永続的に使えるアプリのトークンでwallに投稿することにした。
上記URLに直接アクセスするとaccess_tokenがわかるので、それをメモってハードコーディング。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
「趣味は読書2」にtwitter経由検索
twitter連携その2.twitterでリプライ飛ばしてもらって、タイトル検索もしくは著者検索をして、リプライで返す。というやつ。
仕組みは簡単。twitterである程度決まった書き方してもらえば、そこから正規表現でテキトーにバラしてSQLにして投げ込むだけのお手軽さ。
とはいえ、twitter の仕様? since_id が意味不明でハマってしまった。
since_idは、そのID以降のtweetを拾う。
と思ってたんだけど、どうやっても出てこない。検索しまくったもののよくわからない。しょうがないんで、前回取得した最大のIDをDBに記録。特にパラメータもなしに mention を1ページ20件×5ページ分取得して、記録しておいたIDより小さいものがあったらスキップ、というなんだかアレなやりかたになってしまった。
lolipop のロリポプランでは、cron の最小間隔5分。5分ごと、twitterで、mentionを取得することになる。その間に100超えるリプライがあったらあふれてしまうので、そのときは最大取得ページ数を増やすことに。現状、たぶんほとんど使われないので、これでも平気、のはず。
一応、ケータイで自分の本棚の検索をできるようにしてあるんだけど、こっちはIDとパスワードをそのたびに入力しなきゃいけない、ちょっとした面倒がけっこうなハードル。ケータイでtwitter見ることが多いので、急ぎじゃなければ(検索結果が返ってくるまで、最大で5分はかかる)twitter経由で検索するかな。
https://doncha.net/about.pl?c=help
https://twitter.com/dokusyo2
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
paypal と 電子書籍のダウンロード販売(その3)
ということで、知人、というか身内の同人誌ダウンロード販売ページを公開した。DRMフリーの電子書籍というかPDF、300円均一。
下町飲酒会駄文支部 日野祐太郎
この中では、「Vanish」!が完成度も高く抜けた傑作。次のグループが「あかるいほうへ」「アロイのやさしい神さま」。「猫神リスペクト」が佳品で、「赤貧遁走曲」はエピソードの長さがいちいちもったいない。
といったところかな。
ぜひ一度読んでみてください。身びいきをさっ引いても、かなりおもしろい小説群です。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」