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

问题描述 投票:0回答:13

嘿,我知道之前有人问过这个问题,但似乎没有任何解决方案有帮助。我第一次在我的应用程序中使用 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.
android react-native facebook-login android-facebook fbsdk
13个回答
56
投票

问题

在为一个 react-native 项目集成 Android SDK 时,我完成了 Android with React Native v0.30+ 项目配置 指南,并运行

react-native run-android
然后得到这个屏幕:

我了解到

FacebookSdk.sdkInitialize
已被弃用。 看这里

经过一番搜索,我发现该指南没有包含为我的应用程序添加 Facebook App 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
    .

这些是对我有用的步骤。


51
投票

您必须使用

FacebookSdk.sdkInitialize(getApplicationContext());
before
setContentView(R.layout.activity_main);
documentation所述。如果您需要完整的 Facebook 登录示例,请在此处查看


32
投票

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

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

<application>
标签里面。


23
投票

对于 SDK v13.+,您必须添加 App IDClient Token

  1. 打开你的app项目中的/app/res/values/strings.xml文件,添加:
<string name="facebook_app_id">1234</string>
<string name="facebook_client_token">56789</string>
  1. 打开你的app项目中的/app/manifests/AndroidManifest.xml文件,添加:
<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>

您可以在您的 FB Developer 帐户中找到您的客户令牌:

App > Dashboard > Settings > Advanced > Security > Client token.


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 重建您的项目


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());

4
投票

看到这个问题的回复,原来初始化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(模块:app)文件的 dependencies {} 部分以编译最新版本的 Facebook SDK for Android:

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 App 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>

3
投票

检查文档后,我发现他们要求在应用程序类onCreate()方法

中初始化
FacebookSdk

来自 Facebook 文档的 Snap 代码:

  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);
   }
 }

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);

0
投票

如果这对任何人有帮助。对我来说,我必须做出这个改变

implementation 'com.facebook.android:facebook-login:latest.release' // for FB login 

上面的代码行必须添加到依赖项对象的末尾,而不是介于两者之间的任何位置。 这是在 android/app/build.gradle 文件中


0
投票

我的应用程序崩溃了,因为 隐私政策 url 没有在 https://developers.facebook.com/ 的“设置/基本”中提供。 (实际上它已经提供了,但我不得不再次“保存更改”。似乎是来自 Facebook 的错误)。

应用程序运行良好,错误消息

Facebook Sdk Has Not Been Initialized FacebookSdk.sdkInitialize()
消失了。希望这有帮助。


0
投票

对我来说,这个问题是由于我的应用程序中有一个名为 react-native-fbsdk 的包引起的。 请检查您的

package.json
文件是否相同。

我使用

npm uninstall fbsdk
删除了包并通过应用程序重建并且它运行良好。

希望这个解决方案对你有用!


-1
投票

从 AndroidManifest.xml 中删除

android:exported=true
并且 targetSdkVersion 应该小于 31

© www.soinside.com 2019 - 2024. All rights reserved.