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 错误