[{PageViewPlugin}] [Emergency Situation Sharing Tool], [Send Message by Gmail], [Cloud Functions], [Firebase Cloud Messaging], [Google Assistant API] !!!Abstract I'm thinking what I wanted to do in ESST project can be implemented by using Firebase. I would like to study how Firebase can work by trying to develop ESST by using Firebase. !!!Topics *[Android]クライアントからTwitterのタイムラインを取得できるか? |Firebaseのドキュメント[1]をベースに進めてみよう。 |Twitter APIに登録して、API KeyとAPI Secretを取得して、FirebaseのAuthentificationのTwitterを有効にしてみた。 {{{Default FirebaseApp is not initialized in this process Make sure to call FirebaseApp.initializeApp(Context) first. FirebaseAuth.getInstance();}}} |これが出て先に進めない。 |ここ[2]も重要だ。これをちゃんとやってみよう。 |いつの間にか、上記エラーも出なくなるが、コンパイルエラーが。。。 {{{ Invoke-customs are only supported starting with Android O (--min-api 26) Message{kind=ERROR, text=Invoke-customs are only supported starting with Android O (--min-api 26), sources=[Unknown source file], tool name=Optional.of(D8)} }}} |うーん、以下をProjectのbuild.gradleに追加して解決[5]。 {{{ compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }}} |TimeLineは取得できるようになりました。 *quick start sample |行き詰ったので、まずは、[Android]のクイックスタートをやってみる[3]。githubからプロジェクトフォルダダウンロードして、展開して、[Android Studio]でauthフォルダを開く。そうすると、必要なダウンロードが自動的に始まる。 |エラーがいくつかでて終わる。必要な設定ファイルがないから当然。Tool->Firebaseでアシスト画面を開きAuthentification->connect Firebaseをやると、ネットワークの調子が良ければ、Firebaseサーバ側にプロジェクトが生成され、Androidアプリ側にもgoogle-services.jsonなど必要なファイルがダウンロードされて設定ができる。 |TwitterのAPI KeyやAPI SecretをAPPSページ[4]から持ってきて、Firebase Consoleのページと[Android]のリソースresにあるids.xmlに追加。 {{{ com.google.firebase.FirebaseException: An internal error has occurred. Identity Toolkit API has not been used in project 937695033468 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/identitytoolkit.googleapis.com/overview?project=937695033468 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry. }}} |Identity Toolkit APIを有効にしてみる。 {{{ com.google.firebase.auth.FirebaseAuthException: The given sign-in provider is disabled for this Firebase project. Enable it in the Firebase console, under the sign-in method tab of the Auth section. }}} |注意点ですが、慣れていないと意外と引っかかるのが、[Android Studio]のConnect to Firebaseを使って設定すると、Firebase上にどんどんプロジェクトが自動作成されます。どのアプリがどのプロジェクトに接続するかを理解しながらAndroidアプリ側、Firebaseサーバ側、Twitterサーバ側を設定しないと当然エラーがおこります。当たり前なのですが。。 *AndroidクライアントからGmailが送れるか? |まずは、OAuthでGoogleにログインしてみる。なお、[6]で最初に要求されるSHA Finger Printは、Firebase Assistantがすでに設定してくれてた.できたこと、できなかったことを[Send Message by Gmail]に記録。 *Firebaseのサーバ側のDBにクライアントからメッセージを登録できるか。 |Cloud [Firestore] がそれかもしれない。ちょっと試してみる。 *[Web Application on Firebase] |アンドロイドだけじゃなく、ウェブもやってみる。 *リアルタイムでプッシュできるか? |リアルタイムというのは[Cloud Functions] |プッシュはサーバからクライアントにメッセージを送るもの。[Firebase Cloud Messaging]でサーバからクライアントはできる。クライアントからクライアントにおくるのは今回gmailでやるとして、Twitter からリアルタイムで情報を取得するのをできないものか。 !!!Reference #[#1]Google, Android で Twitter を使用して認証する, [https://firebase.google.com/docs/auth/android/twitter-login?hl=ja] #[#2]Google, Android プロジェクトに Firebase を追加する, [https://firebase.google.com/docs/android/setup?hl=ja] #[#3]Google Inc, quickstart-android, [https://github.com/firebase/quickstart-android] #[#4]Twitter, Inc., Twitter Apps, [https://apps.twitter.com] #[#5]Invoke-customs are only supported starting with android 0 --min-api 26, [https://stackoverflow.com/questions/49891730/invoke-customs-are-only-supported-starting-with-android-0-min-api-26] #[#6]Google Inc, Android で Google ログインを使用して認証する, [https://firebase.google.com/docs/auth/android/google-signin?hl=ja]