Android アプリケーションに Twitter ログインを実装することができました。すべてが正常に機能するので、きれいに保つようにしています。
今のところ、Login with Twitter 機能のみを使用する必要があるため、ここに示されている手順に従いました: https://dev.twitter.com/twitter-kit/android/twittercore
前述のとおり、すべて正常に動作していますが、アプリケーションを起動するたびに次のエラーが発生します。
E/Fabric ( 8859): Error dealing with settings
E/Fabric ( 8859): java.lang.IllegalArgumentException: Fabric could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element
E/Fabric ( 8859): <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>
E/Fabric ( 8859): at io.fabric.sdk.android.services.common.ApiKey.logErrorOrThrowException(ApiKey.java:93)
E/Fabric ( 8859): at io.fabric.sdk.android.services.common.ApiKey.getValue(ApiKey.java:44)
E/Fabric ( 8859): at io.fabric.sdk.android.services.settings.Settings.initialize(Settings.java:68)
E/Fabric ( 8859): at io.fabric.sdk.android.Onboarding.doInBackground(Onboarding.java:80)
E/Fabric ( 8859): at io.fabric.sdk.android.Onboarding.doInBackground(Onboarding.java:26)
E/Fabric ( 8859): at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:46)
E/Fabric ( 8859): at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:11)
E/Fabric ( 8859): at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call(AsyncTask.java:294)
E/Fabric ( 8859): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/Fabric ( 8859): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
E/Fabric ( 8859): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/Fabric ( 8859): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/Fabric ( 8859): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/Fabric ( 8859): at java.lang.Thread.run(Thread.java:818)
アプリケーションの Consumer Key を使用して、マニフェスト ファイルにその値を追加しようとしましたが、代わりに次のエラーが発生しました。
3-24 13:34:38.451 10250-10268/... E/Fabric﹕ Unknown error while loading Crashlytics settings. Crashes will be cached until settings can be retrieved.
org.json.JSONException: No value for app
at org.json.JSONObject.get(JSONObject.java:389)
at org.json.JSONObject.getJSONObject(JSONObject.java:609)
at io.fabric.sdk.android.services.settings.DefaultSettingsJsonTransform.buildFromJson(DefaultSettingsJsonTransform.java:24)
at io.fabric.sdk.android.services.settings.DefaultSettingsController.loadSettingsData(DefaultSettingsController.java:66)
at io.fabric.sdk.android.services.settings.DefaultSettingsController.loadSettingsData(DefaultSettingsController.java:47)
at io.fabric.sdk.android.services.settings.Settings.loadSettingsData(Settings.java:139)
at io.fabric.sdk.android.Onboarding.doInBackground(Onboarding.java:80)
at io.fabric.sdk.android.Onboarding.doInBackground(Onboarding.java:26)
at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:46)
at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:11)
at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call(AsyncTask.java:294)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
すべてが正常に機能している場合にこのエラーが発生する理由がわかりません。その値は意図した目的には明らかに必要ないため、Twitter がバックグラウンドで何か特別なことを行っているかどうかはわかりません。それに加えて、Twitter ログインを使用するためにマニフェストでその値を提供する必要があるドキュメントのどこにも言及していません。
更新: Twitter コミュニティでこの同じ問題を提示しました。その答えは、「Twitter キットは Fabric の上に構築されているため、Fabric 設定と対話するには API キーが必要です」というものです。私の意見では、これはログイン以外に Twitter が何をしているのかという私の質問にはまだ答えていません。しかし、Fabric の上に構築されている場合は、Fabric プラットフォームが機能するために必要な、ログインには必要のない何かを実行しようとする、いくつかのレガシーの問題に起因する可能性があると思います。詳細はこちら: https://twittercommunity.com/t/twitter-login-working-fine-but-keeps-asking-api-key-android/34383/3