Facebook Sdk尚未初始化FacebookSdk.sdkInitialize()

时间:2015-05-13 11:22:46

标签: android react-native facebook-login android-facebook fbsdk

嘿,我知道以前曾经问过,但是没有一个解决方案似乎有所帮助。我在我的应用程序中使用了第一次使用Facebook SDK。

我尝试过的事情:

我曾尝试过互联网上发现的大部分内容,但没有得到任何相关内容。

这是我的MainActivity.java:

 public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FacebookSdk.sdkInitialize(getApplicationContext());
   } 
}

这是我的Activitymain.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

 <com.facebook.login.widget.LoginButton
    android:id="@+id/connectWithFbButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center_horizontal"
    android:text="  connect_with_facebook" /> 
</LinearLayout>

查看我的 Logcat

 05-13 16:30:39.332: E/AndroidRuntime(10264): Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

8 个答案:

答案 0 :(得分:47)

您必须先使用FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main);作为documentation状态。如果您需要完整的Facebook登录示例check this one here

答案 1 :(得分:17)

问题 在将Android SDK集成到react-native项目时,我已经用React Native v0.30 + Project Configuration指南完成了Android,并运行react-native run-android,然后得到了以下屏幕: 我了解到不建议使用FacebookSdk.sdkInitialize。看这里 经过一番搜索,我意识到该指南没有包含为我的应用程序添加Facebook App ID的步骤。 解 打开android / app / src / main / AndroidManifest.xml文件,然后在标记中查找以确认此元数据标记存在: 打开android / app / src / main / res / values / strings.xml文件,并确认其中存在一个“ facebook_app_id”字符串标记,其中您的应用ID为以下值: 您的APP_ID_HERE 运行react-native run-android。 这些是对我有用的步骤。

答案 2 :(得分:10)

您不再需要使用FacebookSdk.sdkInitialize。检查你的:

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

位于<application>标记内。

答案 3 :(得分:3)

检查documentation后,我发现他们要求在应用程序类onCreate()方法中初始化 FacebookSdk

从Facebook doc抓取代码:

  public class MyApplication extends Application {
 // Updated your class body:
 @Override
 public void onCreate() {
    super.onCreate();
    // Initialize the SDK before executing any other operations,
    FacebookSdk.sdkInitialize(getApplicationContext());
    AppEventsLogger.activateApp(this);
   }
 }

答案 4 :(得分:1)

不赞成使用sdkInitialize()是有原因的。

转到android文件夹中的清单文件并添加以下内容

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

之后,在您的strings.xml文件(res / values / strings.xml)中附加字符串条目:

<string name="facebook_app_id">APP_ID</string>

关闭您的Metro Builder并使用react-native run-android重建项目

答案 5 :(得分:0)

使用Initialise Callback Constructor,如下所示:

    Handler mHandler = new Handler();
            FacebookSdk.InitializeCallback initializeCallback = new FacebookSdk.InitializeCallback() {
                @Override
                public void onInitialized() {

                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            //UI Code Here
                        }
                    });
                }
            };
    //before setContentView()   
 FacebookSdk.sdkInitialize(getActivity().getApplicationContext(),initializeCallback);

答案 6 :(得分:0)

仅遵循2步,您的Facebook Sdk iw将在React Native中工作

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

    <string name="facebook_app_id">YOUR_APP_ID_HERE</string>

不需要此b'coz,现在不推荐使用

  FacebookSdk.sdkInitialize(getApplicationContext());

答案 7 :(得分:0)

对于遇到此问题的Flutter Devs。

确保已按照facebook documentation中的步骤1-6进行操作。

在MainActivity文件中添加FacebookSdk.sdkInitialize()无法解决该问题。