47

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

我试过的:

我已经尝试了在Internet上找到的大部分内容,但没有得到任何关于此的信息。

这是我的 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.
4

8 回答 8

49

您必须使用FacebookSdk.sdkInitialize(getApplicationContext()); 之前 setContentView(R.layout.activity_main);文档说明。如果您需要完整的 facebook 登录示例,请在此处查看此示例。

于 2015-05-13T11:25:15.250 回答
49

问题

在为 react-native 项目集成 Android SDK 时,我已经完成了Android with React Native v0.30+ 项目配置指南,然后运行react-native run-android,然后得到这个屏幕:

我了解到它FacebookSdk.sdkInitialize已被弃用。看这里

经过一番搜索,我意识到该指南没有包含为我的应用添加 Facebook 应用 ID 的步骤。

解决方案

  1. 打开android/app/src/main/AndroidManifest.xml文件并查看<application>标签以确认此meta-data标签存在:

    <meta-data android:name="com.facebook.sdk.ApplicationId"
              android:value="@string/facebook_app_id"/>
    
  2. 打开android/app/src/main/res/values/strings.xml文件并确认有一个“facebook_app_id”字符串标签,其中您的应用程序 ID 作为值:

    <string name="facebook_app_id">YOUR_APP_ID_HERE</string>
    
  3. 运行react-native run-android

这些是对我有用的步骤。

于 2018-08-02T11:00:39.093 回答
28

您不再需要使用 FacebookSdk.sdkInitialize。检查您是否:

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

<application>标签内。

于 2017-11-23T21:27:41.343 回答
10

不推荐使用是有原因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 重建您的项目

于 2018-11-06T11:34:29.667 回答
5

只需 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());
于 2019-09-23T11:55:39.000 回答
3

检查文档后,我发现他们要求在 Application 类Method中初始化FacebookSdkonCreate()

从 Facebook 文档获取代码:

  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);
   }
 }
于 2016-11-28T08:15:56.023 回答
1

看到这个问题中列出的回复,初始化 Facebook 的旧方法是:

public class MyApplication extends Application {

 @Override
 public void onCreate() {
    super.onCreate();
    // Initialize the SDK before executing any other operations,
    FacebookSdk.sdkInitialize(getApplicationContext());
    AppEventsLogger.activateApp(this);
   }
 }

但我们可以得到消息:

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

FacebookSdk.sdkInitialize()现在已弃用。

现在(2021)Facebook 初始化已经改变,Facebook 初始化是自动的

1 将以下内容添加到 build.gradle (module: app) 文件的 dependencies {} 部分以编译最新版本的 Android 版 Facebook SDK:

implementation 'com.facebook.android:facebook-android-sdk:latest.release'

添加您的 Facebook 应用程序 ID 和客户端令牌

将您的 Facebook 应用 ID 和客户端令牌添加到项目的字符串文件并更新您的 Android 清单:

1 打开您的/app/res/values/strings.xml文件。

2 将名称属性 facebook_app_id 和值作为您的 Facebook 应用程序 ID 的字符串元素添加到文件中。例如

<string name="facebook_app_id">Facebook App ID</string>
<string name="facebook_client_token">Facebook Client ID</string>

3 打开/app/manifests/AndroidManifest.xml

4 将 uses-permission 元素添加到清单:

<uses-permission android:name="android.permission.INTERNET"/>

5 将元数据元素添加到应用程序元素:

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    <meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
    ...
</application>
于 2021-10-20T19:26:15.063 回答
0

像这样使用初始化回调构造函数:

    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);
于 2016-02-18T11:56:33.990 回答