【发布时间】:2018-07-16 13:32:56
【问题描述】:
Android Facebook SDK 在调用FacebookSdk.sdkInitialize(context) 时总是向graph.facebook.com 发出网络请求,即使尚未使用任何SDK。
所以如果我们在Application.onCreate() 中初始化它,总会有至少一个网络请求。即使设置如下:
<meta-data
android:name="com.facebook.sdk.AutoLogAppEventsEnabled"
android:value="false" />
我们对此进行了仔细研究,因为用户抱怨他没有使用 Facebook 登录(这就是我们首先使用 Facebook SDK 的原因)并且仍然有“用户数据”传输到 Facebook。在 GDPR 和可疑用户时代,这是一种非常不利的行为!
我们现在所做的是仅在用户想要使用 Facebook 登录时(在用户单击按钮时)调用 FacebookSdk.sdkInitialize(context)。此外,我们从AndroidManifest 中删除了android:name="com.facebook.sdk.ApplicationId" 的meta-data。这可以防止初始网络请求,但随后在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 在开始时仍然发出请求?如果他们想验证 auth 令牌,他们可以在 SDK 真正使用后立即进行......
当
sdkInitialize()未被调用时,Facebook 是否知道并容忍崩溃?因为我担心当这个NullPointerException被删除时会出现其他崩溃...最重要的一点:在不使用 Facebook SDK 的功能时,还有其他方法可以阻止来自 Facebook SDK 的网络请求吗?
【问题讨论】:
-
看起来他们目前正在为 iOS 解决类似的问题:developers.facebook.com/bugs/2049684891939638 Android 现在也有一个问题:developers.facebook.com/bugs/1228749923934453
-
您使用的是什么版本的 sdk,以及您如何避免调用
FacebookSdk.sdkInitialize。我正在使用com.facebook.android:facebook-core:4.34.0,它是通过应用程序启动调用的,我在Application.onCreate中不需要任何代码。清单AutoLogAppEventsEnabled标志不会阻止 fb 拨打电话。它是GET /v3.0/xxx?fields=..,看起来像是一个 fetch config 调用,但谢谢,不,谢谢 FB。 GDPR 处理团队说不。那么你是如何避免sdkInitialize来电的呢? -
请禁用您需要从
AndroidManifest中删除<meta-data android:name="com.facebook.sdk.ApplicationId"的初始调用,并在您真正使用它时立即调用FacebookSdk.setApplicationId(getString(R.string.facebook_app_id))和FacebookSdk.sdkInitialize(context)(我们正在使用@987654345 @也是)。 -
会尝试的。干杯。
-
FacebookSdk.sdkInitialize(context) 现在已弃用。任何不推荐使用的方法?谢谢。
标签: android facebook facebook-android-sdk