web-dev-qa-db-ja.com

Facebook Sdkが初期化されていないFacebookSdk.sdkInitialize()

これは以前に尋ねられたことを知っていますが、解決策はありません。アプリケーションで初めて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());
   } 
}

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>

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.
33
Tufan

FacebookSdk.sdkInitialize(getApplicationContext());beforesetContentView(R.layout.activity_main); as documentation state outを使用する必要があります。完全なFacebookログインの例が必要な場合は、 こちらをチェックしてください

47

問題

Android SDKを統合している間に、 Androidを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ファイルを作成し、値としてアプリIDを含む「facebook_app_id」文字列タグがあることを確認します。

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

これらは私のために働いたステップです。

28
Beau Smith

FacebookSdk.sdkInitializeを使用する必要はもうありません。あなたの:

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

内側にあります <application>タグ。

ドキュメント を確認した後、initialize FacebookSdk Application class onCreate() Methodを要求していることがわかりました。 。

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

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を使用してプロジェクトを再構築します

2
Martin Nowosad

次のような初期化コールバックコンストラクターを使用します。

    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
Jayant Arora