次は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」
体調不良でダウン
昨日、水元公園の屋台で酒を飲んで帰ってきたら、体がだるくてダウン。歯周病の歯茎の疼きもひどく、寒気で歯が鳴るほど震えたと思ったら熱帯夜かと思うほど暑くて汗だくになったり、を断続的に繰り返す。今日の昼すぎに、ようやくモノが食えるようになったけど、だるくてふらつくぜ。
ここんとこ、毎日何をするわけでもなく、変わらない日々を怠惰に過ごしてるだけなのに。季節の変わり目にやられたのかなあ。
オウムの指名手配犯が捕まったとか、消費増税法案がとか、いろいろ世間は大変らしい。そんなことより傘がない、状態なのだ。とほほ。
水元公園は猫と鷺とおじさんたちの距離が近い。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
野良ITで無為徒食
なにもなさず、いたずらにくうだけ。無為徒食と書く。いや、自分のことなんだけど。フリーランスだ、個人事業主だと言ったところで仕事がないんじゃ、ただの50代無職。
クライアントもなく営業力もないので。
ひたすらマッチングサイトを眺めて、できそうな仕事が流れてたら手を挙げて、うまく合えば仕事にありつく。SES契約というIT系の口入屋に登録して(契約形態が請負の請負の請負とかグレー)たまに流れてくる仕事でできそうなのがあったら手を挙げてみる。けど、現場が求めてるのは30代まで、それも教育、訓練されたエンジニア。わたしのような野良ITもどきだと、上流工程がどうしたとか、工数がどうした、なんて専門用語から摺合せの必要があり、無駄なコストがかかることになるので出番はない。
ただでさえ、あとはボケるだけの年齢だ。ぼーっとしてると脳みそが腐る・腕が鈍るので、phpのフレームワークcakePHPをいじってみたり、jquery mobileでモバイルサイトを作ってみたり、facebookのAPIをいじってウォールに投稿できるようにしてみたり。思いつきで食い散らかし。
公開中の 趣味は読書2 も 創作文芸見本誌会場HappyReading も、今のところ、機能追加のネタも思いつかず、平穏無事安定稼働状態でバグ取りに追われることもなく、perlのコードを書く機会が減ってるので、少しでもなにか作る方向で頭を回しておかないと。
個人でやる以上、頭と体の健康が第一、だよなあ。
» ローカル環境で電子書籍を作る、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」
enchant.jsでスマホのゲーム
昨日の続き。スマホのゲームを作るために、enchant.jsというjavascriptのフレームワークをごそごそ調べてみた。いやもう恐るべしのひとこと。アクション、シューティング、RPGとなんでもこいで、すでにいくつもゲームが公開されていて、そのクオリティは、え?これjavascirptなの?ブラウザなの?と驚かされるシロモノが。
ノベルゲーム用のプラグイン m3scriptというのも公開されていて、スマホ用にゲームを作るなら enchant.jsが最強の一択っぽい。
https://enchantjs.com/ja/
WEBアプリにしちゃえば、たぶん、facebookのアプリなどに繋げていくこともできそうだし、ネイティブアプリのような集金装置は使えないけど、広がりがあっていろいろ展開した結果、どうにかできそうな、という大雑把な感想も。
ここで何度も言ってるように、今、盛り上がってるのはモバイル。
スマホで、jquery mobileを使ったサイト・enchant.jsを使ったゲーム。このふたつを頑張ればいいような気がしてきた。やっぱりここで100回は確実に言ってるように「あとはネタ次第」だ。たくさん調べものして勉強しなきゃいけないなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
html5 javascriptでスマホアプリ
スマートフォンで、ネイティブアプリなのか、WEBアプリなのか、という話があったので読んでみたら、とりあえず両方並行していいとこ取りしながら転がすけど、今後はWEBアプリになるんじゃないか、という論調。そのWEBアプリというのが、HTML5の上に、javascriptで書かれたもの。こっち方面はまったく不勉強で、改めて見てみて驚いた。シューティングやアクションなどの動きの激しいゲームも動いてるじゃありませんか。javascriptで。
「html5 ゲーム」「html5 canvas アニメーション」などで検索するとぞろぞろ出てくる。
眺めてると、ゲームのための javascriptのフレームワーク enchant.js というのがあって、ゲームに関してはほぼこれが決定版っぽい。
PCでは有名な吉里吉里/KAGというノベルゲームエンジンもエミュレートできる、らしい(調べる)てことは。去年、吉里吉里で作った、 日野裕太郎『おかえりください』 をiphoneやandroidに移植するハードルもぐっとさがっている、っぽい。
ただ、やっぱりここも最大の問題は、WEBアプリにした場合、どうやって金にするのか集金するのか。ネイティブアプリだと app storeがあるし、android marketもある。でも、WEBの場合、そこが致命的に弱いよなあ。結局いつまでたっても「WEBはタダ」となってしまう。たとえば、paypalを使って月々課金することも可能だけど、「WEBはタダ」という意識が立ちはだかるので、あれこれ気をつかって作りこんでも、たぶんタダはタダ。
コンプガチャみたいな仕組みならいいんだろうけど、あれは組織ぐるみ会社がかりだからできること。ひとり個人が、プログラムはどうにか頑張ったとしても、グラフィックデザインを含めたパッケージとか、法律がらみの運用面とか、かなりしんどい。
ただ、んなこと言ってるといつまでたっても何も出てこない・始まらない。とりあえず、 日野裕太郎『おかえりください』 をhtml5、スマホに移植してみよう、か。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」