忍者ブログ
PCメモ
PC関係のメモ、気付いたこと。 simhとChromium OSをいじって遊んでいます。 Chromium OSのカスタムビルドを配布しています。(http://chromiumosde.gozaru.jp) twitter: @zui22904336 PGP fingerprint: 45FC 0E47 A68A FA06 02FE 2BEF B72C C6E6 F9FF 1C19
Admin / Write
2014/04/12 (Sat) 16:25
# '15.03.24 一部古い記述を修正しました。

以前の記事
でChromium OSのビルド方法を書きましたが、この方法だとFilesアプリを起動したときにローカルのダウンロードフォルダは見えるのにGoogleドライブのほうは開いてみても中身が全然見えない、という問題がありました。

これはFilesアプリがGoogleドライブにアクセスする際にGoogleのAPIを使用しており、APIにアクセスするための認証キーが存在しないためにアクセス権エラーになっているのが原因でした。
エラーの内容は、Chromiumブラウザを起動してchrome://drive-internalsにアクセスするとみることができます。


赤字でHTTP_FORBIDDENというエラーがたくさん出ています。これが認証キーがないために起きるエラーです。
Chromium(OSに限らない?)のAPI Keyに関する情報の詳細は以下の公式サイトのページに書いてあります。

API Keys (http://www.chromium.org/developers/how-tos/api-keys)

これによると直し方は2つあって、ビルド時にAPIキーを埋め込んでしまう方法とインストール後にAPIキーをファイルに書き込む方法があります。

今回は後者の方法を使って対策します。あと、対策するのはFilesアプリのGoogleドライブ連携だけです。ほかはまた問題が見えたら対策しようと思います。

Chromium-dev グループへの参加


上に書いたAPI Keysの解説ページにはGoogle GroupのChromium-devに参加しないと使えないAPIがある、という記述があります。
ただ、Googleドライブと連携するためのAPIはChromium-devに参加しなくても使えますので、面倒ならここは飛ばしても構わないと思います。

とりあえず今回は上の記事に従ってChromium-devに参加してみます。

まずhttps://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-devにアクセスします。以下のように表示されるので「投稿するには~」の青いボタンをクリックします。



「Chromium-dev」グループに参加という画面が出るので「このグループに参加」をクリックします。メールを受け取るのが嫌なら真ん中の「新しいメッセージごとに~」のコンボボックスを「更新情報をメールで受け取らない」に変更しておきます。



これでChromium-devへ参加できました。続けてAPIの有効化を行います。

Google API の有効化


Google APIを使えるようにするには、Google Developers Consoleというページにアクセスして、使いたいAPIを有効化し、かつAPIにアクセスするための認証キーを発行してもらう必要があります。今回作業する範囲ならGoogleアカウントさえあれば、費用は掛かりません。

まずhttps://cloud.google.com/consoleにアクセスします。以下のようなページが表示されるので赤い「CREATE PROJECT」ボタンをクリックします。

IE9ではうまくアクセスできませんでした。FirefoxやChromeを使うのがお勧めです。



New Projectという画面が表示されるので、適当な名前を入力し、2つめのI have read and agree to all Terms of Service for ~をチェックして Createをクリックします。



しばらく待つとプロジェクトが作られるので、左側のメニューからAPI & authをクリックします。APIの一覧が表示されるので「Drive API」を探して右側の「OFF」ボタンをクリックして「ON」に変えます。



ちなみに、上に書いたAPI Keysのページには、有効にしておくといいAPIとして以下のものがあげられています。(逆に肝心のDrive APIのことは書いてありません。それでちょっとはまりました)

  • Google Cloud Messaging for Chrome
  • Google Maps Geolocation API
  • Time Zone API
  • Chrome Remote Desktop API
  • Chrome Spelling API
  • Chrome Suggest API
  • Chrome Sync API
  • Chrome Translate Element
  • Safe Browsing API
  • Speech API
  • Google Now For Chrome API

赤字で示したものはChromium-devグループに参加していないと使えないAPIです。必要に応じて有効にしておくといいと思います。

ちなみにChrome Remote Desktop APIを有効化しなくてもChromium OS上でリモートデスクトップは使用できました。このAPIがどこで役立ってくるのかはよくわかっていません。

続けてAPI Keyを発行します。

API Keyの入手


ここまででAPIの有効化ができましたが、このAPIをChromium OSから使えるようにするためにはAPI Keyを入手しておく必要があります。API Keyの入手もGoogle Developer Console上で続けて行います。

API Keyと一口に言っても、実際には以下の3つがあります。

  • Client id
  • Client Secret
  • API Key

この3つをすべて入手する必要があります。

まず左のメニューのAPI & Authの下にあるCredentialsをクリックし、OAuthの下の赤いCREATE NEW CLIENT IDをクリックします。



Create Client IDという画面が出るので、Application typeをInstalled application、 Installed application typeをOtherにしてCreate Client IDという青いボタンをクリックします。



画面右側に"Client ID for native applicationという枠が表示されます。ここのClient IDとClient secret(赤丸で囲んだもの)をあとで使います。
続けて、下のCreate New Keyという赤いボタン(青丸で囲んだもの)をクリックします。



Create a new keyという画面が出るので、左から2番目のBrowser keyボタンをクリックします。



Create a browser key wnd configure allowed referersという画面が出るのでそのままCreateという青いボタンをクリックします。



Key for browser applicationsという枠が新たに表示されます。ここのAPI Keyをあとで使います。




これで必要な3つのキーがそろいましたので、Chromium OS上でAPI Keyの設定を行います。

API Keyの設定


上のAPI Keyのページでは、入手したAPI KEYを環境変数に設定するようにと書いてありますが、実際の設定場所が書いていません。単にchronosユーザの~/.bashrcに書いてもうまくいきません。設定先は/etc/chrome_dev.confというChromiumブラウザの設定ファイルに行います。

まず、Chromium OSを起動してCtrl+Alt+F2を押してターミナルを開き、ユーザchronosでログインします。パスワードは使っているChromium OSのビルド時に設定した値ですのでまちまちです。ArnoldThaBat版を使っているなら"password"です。

/etc/chrome_dev.confはルートパーティションにあります。Chromium OSはルートパーティションをリードオンリーでマウントしますので、リードライトでマウントしなおします。
chronos@localhost / $ sudo mount -o remount,rw /

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:

ルートパーティションをリマウントしたらchrome_dev.confを編集して、上で取得したClient ID, Client Secret, API Keyを書き込みます。
chronos@localhost / $ sudo vi /etc/chrome_dev.conf 

GOOGLE_DEFAULT_CLIENT_ID=(上で取得したClient ID)
GOOGLE_DEFAULT_CLIENT_SECRET=(上で取得したClient Secret)
GOOGLE_API_KEY=(上で取得したAPI key)
(略)

とりあえずこれで作業は終わりです。この後リブートするのですが、GUI側でログインしている場合はCtrl+Alt+F1を押してGUIに戻ってGUIセッションからログアウトしてください。ログアウトせずに再起動すると再起動後にエラーが出ることがあります。
それからChromium OSを再起動すればGoogleドライブの内容にアクセスできるはずです。



Googleドライブの内容が見えるようになりました。最初に見たchrome://drive-internalsを見てみても赤字のエラーは消えています。



なお、Chromium OSのメジャーなビルドの1つであるArnoldTheBat版もAPI Keyが埋め込まれていないため、今回記事にした方法でAPI Keyを有効にする必要があるようです。

ちなみにHexxeh版はこの作業を行わなくてもGoogleドライブにアクセスできます。おそらくビルド時にAPIキーを埋め込んであるんだと思いますが、上にURLをのせた公式サイトのAPI Keyのページには

Note that the keys you have now acquired are not for distribution purposes and must not be shared with other users.

とあるんですよね。distribution OKなAPIキーをどこかで入手したんでしょうか。それともChromium-devに参加しなくても使えるAPIなら公開してもいいのかな?
このあたりはまだよくわかっていません。

'15.5.15 追記:同じような質問がこちらにありました。
回答を引用すると

"not for distribution purposes" refers to the keys themselves, not the binaries that you build that use those keys,

だそうです。Keyそのものを公開しなければ、Keyを組み込んだバイナリを配っても別に問題はないみたいですね。

ただ、GoogleのAPIにはAPI Key単位でQuota(単位時間当たりのAPIアクセス回数)が決められていて、Quotaを超えるAPIアクセスは全部エラーで跳ねられます。ビルド時にAPI Keyを埋め込んでしまうと、そのビルドを使っているユーザ全員がそのQuotaに縛られるので、ある時突然Googleドライブにアクセスできなくなる可能性があります。そういう意味では自分で専用にAPI Keyを取っておいたほうが安心かなとも思います。
 
  
 
[関連記事]

[悲報] Chrome R44でffmpegsumoが消えた
Dev serverによるChromium OSのアップデート
Chromium OSにパッケージを追加する
最近のChromium OS R35がVAIO Type Pで動かない件への対策
安定版ソースを使ってChromium OSをビルドする
Chromium OSをKVMで動かす
勝手ビルド版Chromium OSをVirtualBoxで動くようにする
Chromium OSのカーネルをVAIO Type P向けに再構築する
Chromium OSのビルド環境を作る
Hexxeh版Chromium OSをVAIO Type Pにインストールしようとして挫折した話
VAIO Type PでChromium OSをUSBメモリからブートするときのメモ




ランキングに参加してみました。クリックしていただければ嬉しいです。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

パソコン ブログランキングへ

拍手[0回]

PR


Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
  HOME   29  28  27  26  25  24  23  22  21  20  19 
プロフィール
HN:
zui
性別:
非公開
PR
忍者カウンター
忍者ブログ [PR]