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 がそれかもしれない。ちょっと試してみる。 |
アンドロイドだけじゃなく、ウェブもやってみる。 |
- リアルタイムでプッシュできるか?
リアルタイムというのは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