概要
FireTVアプリは Android or Webアプリケーションのどちらかで開発することができます
Webアプリケーションとして開発を進めていたのですが Google OAuth をどうしても実装することができなかったので備忘録として残しておきます
解決方法があればご教授いただきたいです
環境
- Ruby 2.6.2p47
- JavaScript
- FireTV 3gen
- Web App Tester
やりたかったこと
Heroku にデプロイした Web アプリケーションを FireTV 上で動作させます
Web アプリケーションは Google OAuth を使ったアプリになっており認証後 Ruby アプリにアクセスできるようになります
FireTV の Web App Tester を使ってデバッグするのですが「disallowed_useragent」になり OAuth を発動させることができません
普通に Chrome や Firefox のブラウザでテストする分には動作します
どうやら Google の使用で WebView からの OAuth リクエストはすべて拒否されているようです (参考)
FireTV では Web アプリケーションの場合には Amazon ウェブアプリケーションプラットフォームと呼ばれる専用の WebView が立ち上がります
それが原因で disallowed_useragent
になってしまうようです
結果的に解決できなかったのですがいろいろと試したことを紹介します
試したこと
Silk で一度ログインしてからアプリを起動する
Google 的にはデバイスに内蔵されているブラウザで一度認証すれば再度アプリで認証する必要がなくなるとのことだったので FireTV の Silk ブラウザを使って一度認証してからアプリを開いてみたのですがダメでした
もしかしたら実装方法が悪いだけかもしれませんが
アプリ内から認証時にだけ Silk を立ち上げる
これもできませんでした
Web アプリケーションなので立ち上げる方法は window.open
を使ったのですが新規でブラウザは立ち上がらず先に進めませんでした
google-api-javascript-client を使ってみる
JavaScript のみで Google OAuth するライブラリです
認証時に別ウィンドウを開いて行ってくれるので Silk が起動してくれるかなと思って試したのですがダメでした
WebView 内で使っているので当然ダメでした
UserAgent を書き換えられないか
window.navigator.__defineGetter__
を使ってユーザエージェントを書き換えてアクセスしてみたのですがこれもダメでした
もしかしたらこれも実装方法が悪かっただけかもしれません
考察
FireTV + Webアプリケーションの構成では必ず WebView Google OAuth は現状突破できないんじゃないかなと思います
もし Google OAuth を使っているのであれば Silk を使えということなのだと思います
今回は試さなかったのですが FireTV では Android アプリが動作します
なので Android アプリとして作れば Google の公式の Android SDK があるのでこれを使って FireTV でも Google OAuth が使えるようになるのではないかと思っています
0 件のコメント:
コメントを投稿