Hé, je sais que cela a déjà été demandé, mais aucune des solutions ne semble aider. J'utilise le SDK Facebook pour la première fois dans mon application.
Ce que j'ai essayé
J'avais essayé la plupart des choses trouvées sur Internet mais je n'ai rien eu à ce sujet.
Voici mon MainActivity.Java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(getApplicationContext());
}
}
Voici mon activité principale.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>
voir mon 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.
Vous devez utiliser FacebookSdk.sdkInitialize(getApplicationContext());
avantsetContentView(R.layout.activity_main);
en tant que documentation déclare. Si vous avez besoin d'un exemple complet de connexion à Facebook, cochez celui-ci .
Lors de l'intégration du SDK Android pour un projet réactif natif, j'avais terminé le Android avec React Native v0.30 + Configuration du projet guide, puis exécuté react-native run-Android
et obtenu cet écran:
J'ai appris que FacebookSdk.sdkInitialize
est obsolète. vois ici
Après quelques recherches, je me suis rendu compte que le guide ne contenait pas les étapes permettant d'ajouter l'identifiant d'application Facebook pour mon application.
Ouvrez le fichier Android/app/src/main/AndroidManifest.xml
et regardez dans la balise <application>
pour vérifier que cette balise meta-data
existe:
<meta-data Android:name="com.facebook.sdk.ApplicationId"
Android:value="@string/facebook_app_id"/>
Ouvrez le fichier Android/app/src/main/res/values/strings.xml
et confirmez qu'il s'agit d'une balise de chaîne "facebook_app_id" avec l'identifiant de votre application comme valeur:
<string name="facebook_app_id">YOUR_APP_ID_HERE</string>
Exécutez react-native run-Android
.
Ce sont les étapes qui ont fonctionné pour moi.
Vous n'avez plus besoin d'utiliser FacebookSdk.sdkInitialize. Vérifiez si votre:
<meta-data Android:name="com.facebook.sdk.ApplicationId"
Android:value="@string/facebook_app_id"/>
est dans la balise <application>
.
Après avoir vérifié la documentation j'ai trouvé qu'ils demandent à initialiser FacebookSdk dans la méthode Application onCreate()
, Méthode.
(Code de capture de la documentation 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);
}
}
Il y a une raison pour laquelle sdkInitialize()
est obsolète.
Accédez à votre fichier manifeste dans le dossier Android et ajoutez ce qui suit
<meta-data Android:name="com.facebook.sdk.ApplicationId"
Android:value="@string/facebook_app_id"/>
Après cela, ajoutez dans votre fichier strings.xml
(res/values / strings.xml) l'entrée de chaîne:
<string name="facebook_app_id">APP_ID</string>
Fermez votre Metro Builder et reconstruisez votre projet en utilisant react-native run-Android
Utilisez Initialise Callback Constructor comme ceci:
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);