Android Facebook SDK всегда делает сетевой запрос на graph.facebook.com
при вызове функции FacebookSdk.sdkInitialize(context)
даже если ничто из SDK еще не используется.
Поэтому, если мы инициализируем его в Application.onCreate()
, всегда будет хотя бы один сетевой запрос. Даже если настройка выглядит следующим образом:
<meta-data
android:name="com.facebook.sdk.AutoLogAppEventsEnabled"
android:value="false" />
Мы внимательно рассмотрели это, потому что пользователь жаловался, что он не использует Facebook Login (именно поэтому у нас есть SDK для Facebook), и все же есть "пользовательские данные", переданные в Facebook. Во времена GDPR и подозрительных пользователей это очень неблагоприятное поведение!
То, что мы делаем сейчас, вызывает функцию FacebookSdk.sdkInitialize(context)
только тогда, когда пользователь хочет использовать вход в Facebook (в то время, когда пользователь нажимает кнопку). Кроме того, мы удалили meta-data
для android:name="com.facebook.sdk.ApplicationId"
из AndroidManifest
. Это предотвращает первоначальный запрос сети, но затем появляется следующий сбой в CurrentAccessTokenExpirationBroadcastReceiver
:
java.lang.RuntimeException: Unable to start receiver com.facebook.CurrentAccessTokenExpirationBroadcastReceiver: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
at com.facebook.internal.Validate.sdkInitialized(Validate.java:143)
at com.facebook.FacebookSdk.getApplicationContext(FacebookSdk.java:518)
at com.facebook.AccessTokenManager.getInstance(AccessTokenManager.java:86)
at com.facebook.CurrentAccessTokenExpirationBroadcastReceiver.onReceive(CurrentAccessTokenExpirationBroadcastReceiver.java:34)
Теперь есть несколько вопросов:
-
Почему Facebook все еще делает запрос при запуске? Если они хотят проверить токен аутентификации, они могут сделать это, как только SDK действительно используется...
-
Знает ли Facebook и терпит аварии, когда
sdkInitialize()
не вызывается? Поскольку я боюсь, когда это исключениеNullPointerException
будет удалено, будут другие сбои... -
Самое главное: Существуют ли другие способы предотвращения сетевых запросов из SDK Facebook, когда его функции не используются?