Hey I know this was asked before, but none of the solutions seem to help. I'm using first time Facebook SDK in my application.
What I've tried:
I had tried most of the things found on Internet but did not get anything regarding this.
Here is my MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext());
}
}
Here is 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>
see my 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.
You have to use FacebookSdk.sdkInitialize(getApplicationContext());
before setContentView(R.layout.activity_main);
as documentation states out. In case you need a complete facebook login example, check this one here.
Problem
While integrating Android SDK for a react-native project, I had finished the Android with React Native v0.30+ Project Configuration guide, and ran react-native run-android
and then got this screen:
I learned that FacebookSdk.sdkInitialize
is deprecated. see here
After some searching, I realized that the guide did not contain the steps to add the Facebook App ID for my app.
Solution
Open android/app/src/main/AndroidManifest.xml
file and look in the <application>
tag to confirm that this meta-data
tag exists:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
Open android/app/src/main/res/values/strings.xml
file and confirm that this there is a "facebook_app_id" string tag with your app id as the value:
<string name="facebook_app_id">YOUR_APP_ID_HERE</string>
Run react-native run-android
.
These are the steps that worked for me.
You don't need to use FacebookSdk.sdkInitialize anymore. Check if your:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
is inside <application>
tag.
After checking the documentation I found that they are asking to initialize FacebookSdk in Application class onCreate()
Method.
Snap code from 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);
}
}
Use Initialise Callback Constructor like this:
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);
There is a reason why sdkInitialize()
is deprecated.
Go to your manifest file within the android folder and add following
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
After that append in your strings.xml
file (res/values/strings.xml) the string entry:
<string name="facebook_app_id">APP_ID</string>
Close your Metro Builder and rebuild your Project using react-native run-android