chrome.identity APIを使ってGoogle App Engine OAuth2を使う
参考: http://www.ciiycode.com/0z6ziWjWxjjP/google-app-engine-oauth2-provider
Google Account OAuth1.0aがdeprecated化したのがつい先日くらいの話なので、そのまま放置しておくと問題にもなりそうなので検証してみる
参考: http://www.ciiycode.com/0z6ziWjWxjjP/google-app-engine-oauth2-provider
Google Account OAuth1.0aがdeprecated化したのがつい先日くらいの話なので、そのまま放置しておくと問題にもなりそうなので検証してみる
参考1: https://developer.chrome.com/apps/cloudMessaging
参考2: http://docs.monaca.mobi/3.5/ja/manual/backend/push_config/gcm/ (※主に設定の有効の仕方等)
ちょっと前にはchrome.pushMessagingっていうAPIが公開(って言っても一年以上前)されてたはずなのですが、現在これがどうもlegacy扱いになっている模様で現在はchrome.gcmを使うのが良いっぽそう。確かpushMessagingの方はwebstoreを経由してインストールしたアプリで無いと使えないのかどうかまでは覚えてないが、gcmはcrxパッケージングした拡張であれば使う事が可能らしい
っていう事でやってみた
※おそらくはChrome Sync(ChromeでのGoogleアカウントのログイン機能)をやっておかないと出来ないのかも知れない
selenium-webdriverを使えばChrome Extensionの操作テストとか出来たりする模様なのでやってみた
Google公式なGmailな拡張ではメールを受信したりするとブラウザアクションなアイコンが回転するようになっている。これどうやってやってるのか非常に気になったのでその拡張のソースを見てやってみた
angular.jsを使いつつ、chrome_ex_oauthを使ってTwitter APIを使うデモとか出来るんじゃないかなーって思ってやってみた
http://blogs.dion.ne.jp/kotemaru/archives/10093611.html
を参考にすれば良い。でサーバー側はOAuthServiceクラスを使ってOAuth利用による通信であるかっていうのを検知するような方式を利用する
で問題はそれをどうやってChrome Extensionで行うかって所だと思いますけど、一応公式的にはchrome_ex_oauthっていうのを使って利用可能な模様
という事でやってみた
っていうのが追加されている模様。但し、stableなやつでもAPI自体はあるけど実際に使うとなるとこの記事の書いてる段階だとunstableじゃないと出来ない
Chrome Extensionをビルド(.crxを生成する)する際にはChromeなどの拡張管理から生成出来たりできますけど、crxmakeを使うとコマンド使ったりだとかRubyのRakefileにタスク定義するだけで生成出来る模様
Chrome Extensionとかだとウィンドウ出してなんか出すっていう場合だとブラウザアクションとかが良くありえるパターンだと思うのですが、 https://github.com/GoogleChrome/chrome-app-samples によるとchrome.app.windowなのを作ってアプリの画面を新しいウィンドウを作ってそこに出すっていうパターンもある模様。
https://groups.google.com/group/chrome-api-developers-jp/browse_thread/thread/80b45919bb86f9a0 という問題があるっていうの目にしてはいたけど実際実検証とかしてなかったのでメモ
何やらそういう仕様がある模様で。詳しい概要は省略するけど、要は「常に常駐しないバックグラウンドページ」っていう感じな模様
Chrome Extensionで定期実行処理をやる場合だとchrome.alarmsを使う方が良い模様(理由はEvent Pagesに関係する模様。これに関しては後日)
でchrome.alarmsはバージョンによってはexperimentalになってたりする。例えばUbuntu12.04でChromiumだとchrome.alarmsはexperimentalでChromeだと正式で使用できる。又、ChromiumとかだとperiodInMinutesが使用できないとか色々あるみたいで
ということでminumum_chrome_versionを23辺りに設定して使う
どうやら独自のショートカットだけでなく、Browser ActionやPage Action等のショートカットも設定出来る模様
を使えば簡単にブラウザにキーボードショートカットを定義出来る模様
chrome.experimental.identityを使う事でGoogle APIsを使う際にアクセストークンを取得したり出来るらしい。っていうかそもそもがmanifest_versionが2からは外部URLのスクリプトをロードするのですらCSPにより制限されているので(ry
chrome.experimental.socketなAPIを使って、TCPサーバーと接続してみる
chrome.experimental.infobarなAPIを使ってみる
タイトル通り。Chrome Extensionでoauth.jsを使いDropboxのアプリ領域なストレージにアクセスしてみる
chrome.extension.connectを使って、chrome.extension.sendRequestやonRequest等と同様な事をやってみる
※Chromeのみ対応でChromiumは非対応な模様 (Daily Build版のやつは未検証)
タイトル通り、chrome.storage APIを使ってみた
permissionsに設定すればfile://なスキームアクセスも可能なのだけど
前記事のChrome ExtensionでTwitter OAuthを利用してAPIを利用するっていうデモにおいて、manifest_versionを2にすると動かないっていうのが判明。理由がContent Security Policy(CSP)っていうのにひっかかるかららしい。例えば
oauth.jsを使ってTwitter APIを利用するのは前にもやったのですが、その際にはAccess Tokenをhttp://dev.twitter.comから発行してそのままコピペしてやったのでAccess Tokenを取得して云々するという所を完全にすっ飛ばした。なので今回はその処理を含めてやってみる
単純に右クリックメニューで(ブラウザに保管されている)ブックマークが見れるようにする。で前回に書いたようにメニューをネストしつつ表示出来るようにしてみる
chrome.privacyを用いてプライバシー情報に伴うようなデータの送信を抑制したり出来る模様。例えばリファラーを送信しないとか
webRequestを使う事でロードしている(しようとしている)のを取得したり、ヘッダーを書き換えたり出来る模様(但し、書き換えられるヘッダーは限られるっぽい)
Chromeにはomniboxっていうアドレスバーにアクションを追加して候補を補完してくれたりする機能がありますが、これを作ってみる。
ページアクションを使ってみる。ページアクションって何なの?として
てな感じでURLバーの右側に付けられるアイコンをクリックする事でポップアップなページを出せる事が出来る模様。但し、グローバルに常に出すような場合にはページアクションではなくブラウザアクションを採用するのが正しい模様。とりあえず上記の[S]なアイコンが出せるまでをやってみる
コンテントスクリプトとバックグラウンドページを使って、表示画面中にある画像へのリンクをマウスオーバーした段階で別タブで開くっていうのをやってみる
chrome.extension.onRequestとchrome.extension.sendRequestを使って見る
実際に使ってるのを例に書いてみる
見ているWebサイトをTwitterのツイートフォームにタイトルとURLをツイートするのを支援する拡張機能。方式として右クリックメニューに拡張アプリのアイコンと名前を出してそれを選択する事で新しいタブにてツイートフォームのページを表示させる。サイトによっては共有ツールが無い場合があり、サイトをツイートしたりするのが何かとめんどくさいので(以前に)作ってみた
とりあえず要件から
WebSocketを使って送信されたメッセージを受信してHTML5 Web Notification?で表示する。又、サーバーがオチてる場合に再接続できる機能がある事
バックグラウンドページに関してなんですが、そいつ本体自体の話ではなくてブラウザアクション等からバックグラウンドページに定義されているJavaScript等を取得して実行する方法