Android - Facebook SDK 4.30 初始化

Posted

技术标签:

【中文标题】Android - Facebook SDK 4.30 初始化【英文标题】:Android - Facebook SDK 4.30 Initialization 【发布时间】:2018-01-31 11:54:34 【问题描述】:

在使用最新的 SDK 版本 4.30 时尝试通过 Facebook 登录时出现以下错误:

SDK尚未初始化,请务必调用 FacebookSdk.sdkInitialize()

然后应用程序崩溃。

虽然,在官方文档中它应该已经自动初始化了。

请注意,FacebookSdk.sdkInitialize() 现在已弃用,因此不应调用它!

不调用FacebookSdk.sdkInitialize()时的错误日志:

  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.login.LoginManager.<init>(LoginManager.java:79)    at
 com.facebook.login.LoginManager.getInstance(LoginManager.java:92)   
 at
 com.linkdev.tepdeal.login.LoginPresenter.loginWithFacebook(LoginPresenter.java:88)
 at
 com.linkdev.tepdeal.login.FragmentLogin.onClick(FragmentLogin.java:105)
 at android.view.View.performClick(View.java:5637) at
 android.view.View$PerformClick.run(View.java:22433)    at
 android.os.Handler.handleCallback(Handler.java:751)     at
 android.os.Handler.dispatchMessage(Handler.java:95) at
 android.os.Looper.loop(Looper.java:154) at
 android.app.ActivityThread.main(ActivityThread.java:6186) at
 java.lang.reflect.Method.invoke(Native Method)  at
 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

在创建应用程序中强制调用已弃用的FacebookSdk.sdkInitialize() 时,会出现以下错误:

java.lang.NoClassDefFoundError: Failed resolution of:
Lcom/facebook/common/R$layout;                    at
com.facebook.FacebookActivity.onCreate(FacebookActivity.java:77)    
at android.app.Activity.performCreate(Activity.java:6684)    at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)

附注: 尝试使用 Facebook 登录按钮时出现错误

膨胀类 com.facebook.login.widget.LoginButton 时出错

【问题讨论】:

在按钮单击 FacebookSdk.sdkInitialize() 之前添加此行。 发布完整的错误日志 @Shivan FacebookSdk.sdkInitialize() 已弃用 你的问题已经解决了here。 @gendkidesuka 不,还没有 【参考方案1】:

提醒一下,如果有人这样定义

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="1234"/>

不是https://developers.facebook.com/docs/android/getting-started 中所要求的

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

他们会得到

SDK尚未初始化,请务必调用 FacebookSdk.sdkInitialize()

我在 Facebook Share SDK 4.31.0 中遇到了这种情况

compile 'com.facebook.android:facebook-share:4.31.0'

【讨论】:

在尝试不同的解决方案 4 小时后,这对我有用。不过,我不明白为什么直接设置值不起作用..【参考方案2】:

当您忘记在清单文件中添加 Facebook 应用程序 ID 时,通常会出现此问题。

按照这些步骤确保您不会错过任何东西。

Facebook Login for Android - Quickstart

【讨论】:

我按照该指南中的步骤操作,并且 Facebook 应用程序 ID 已列入清单 初始化:FacebookSdk.sdkInitialize(getApplicationContext());应该在设置内容视图之前完成。如果你这样做: setContentView(R.layout.activity_main);在初始化之前,Facebook 按钮不会膨胀到 Activity 中。 FacebookSdk.sdkInitialize(getApplicationContext()) 已弃用,不应在最新的 SDK 中调用

以上是关于Android - Facebook SDK 4.30 初始化的主要内容,如果未能解决你的问题,请参考以下文章

Android Facebook SDK 4.0 登录:用户登录 Facebook 应用程序时出错

facebook 登录 Android 后应用程序关闭(Facebook SDK 版本 4.6.0)?

使用 Facebook SDK 4.0 进行 Android 登录

android facebook sdk 4.1.2 eclipse 错误

Android上的Unity Facebook SDK登录错误

Android Facebook SDK 4.0 ShareDialog 不显示长文本