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

Tuf*_*fan 34 android facebook-login android-facebook react-native 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());
   } 
}
Run Code Online (Sandbox Code Playgroud)

这是My 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>
Run Code Online (Sandbox Code Playgroud)

看我的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.
Run Code Online (Sandbox Code Playgroud)

Men*_*ris 47

你必须使用FacebookSdk.sdkInitialize(getApplicationContext()); 之前 setContentView(R.layout.activity_main);作为文件规定的.如果您需要完整的Facebook登录示例,请在此处查看此示例.


小智 38

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

  1. 打开应用程序项目中的 /app/res/values/strings.xml 文件并添加:
<string name="facebook_app_id">1234</string>
<string name="facebook_client_token">56789</string>
Run Code Online (Sandbox Code Playgroud)
  1. 打开应用程序项目中的 /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>
Run Code Online (Sandbox Code Playgroud)

您可以在 FB 开发者帐户中找到您的客户端令牌:

应用程序 > 仪表板 > 设置 > 高级 > 安全性 > 客户端令牌。

  • 这是新版本的正确答案。需要客户端令牌。谢谢。 (2认同)

Bea*_*ith 30

问题

在为本机反应项目集成Android SDK时,我使用React Native v0.30 +项目配置指南完成了Android,然后运行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"/>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开android/app/src/main/res/values/strings.xml文件并确认这是一个"facebook_app_id"字符串标记,其中您的应用ID为值:

    <string name="facebook_app_id">YOUR_APP_ID_HERE</string>
    
    Run Code Online (Sandbox Code Playgroud)
  3. react-native run-android.

这些步骤对我有用.

  • 你说的应用程序ID是什么意思? (2认同)

Gui*_*uto 16

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

<meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"/>
Run Code Online (Sandbox Code Playgroud)

<application>标签里面.


Mar*_*sad 8

sdkInitialize()被弃用是有原因的。

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

<meta-data android:name="com.facebook.sdk.ApplicationId"
      android:value="@string/facebook_app_id"/>
Run Code Online (Sandbox Code Playgroud)

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

<string name="facebook_app_id">APP_ID</string>
Run Code Online (Sandbox Code Playgroud)

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

  • 即使在AndroidManifest.xml中配置正确,仍然给出`SDK尚未初始化,请确保先调用FacebookSdk.sdkInitialize()。` (5认同)

Kes*_*era 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>
Run Code Online (Sandbox Code Playgroud)

不需要这个,因为它现在已被弃用

  FacebookSdk.sdkInitialize(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)