在Android中使用React Native Facebook SDK时,“FBSDKPackage”未定义。

4

我正在尝试快速开发一个React Native Android应用程序。它需要使用Facebook登录,因此我正在按照这个指南进行操作。

https://developers.facebook.com/docs/react-native/getting-started-android/

很遗憾,这似乎已经过时了,因为ReactActivity.java没有公开一个getPackages方法。此外,FBSDKPackage也不见了。我正在使用React Native版本0.29。

package com.myapplication;

导入 android.content.Intent;

导入 com.facebook.CallbackManager; com.facebook.react.ReactActivity; com.facebook.react.ReactPackage; com.facebook.react.shell.MainReactPackage;

导入 java.util.Arrays; java.util.List;

public class MainActivity extends ReactActivity { CallbackManager mCallbackManager;

/**
 * Returns the name of the main component registered from JavaScript.
 * This is used to schedule rendering of the component.
 */
@Override
protected String getMainComponentName() {
    return "MyApplication";
}

@Override
protected List<ReactPackage> getPackages() {
    mCallbackManager = new CallbackManager.Factory().create();
    ReactPackage packages[] = new ReactPackage[]{
            new MainReactPackage(),
            new FBSDKPackage(mCallbackManager), // <-- Cannot resolve symbol 'FBSDKPackage'
    };
    return Arrays.<ReactPackage>asList(packages);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    mCallbackManager.onActivityResult(requestCode, resultCode, data);
}

}

有人对此有经验吗?

谢谢!
Chris


你解决了吗?请回复。 - Shariq Musharaf
我没有。转而开始了另一个项目。 - Chris Harrington
4个回答

1
由于某种原因,react-native-fbsdk(react native 0.47.1)无法创建模块compile project(':react-native-fbsdk'),所以我不得不使用Android Studio克隆此项目https://github.com/facebook/react-native-fbsdk并自行导入。当然还要添加import com.facebook.reactnative.androidsdk.FBSDKPackage;

这个答案是正确的,我将上述的git模块添加到我的项目中,然后编译它以获取FBSDKPackage。谢谢兄弟。 - Ankit Shukla

1

1
在我的情况下,我需要手动编辑 app/build.gradle,通过添加 react-native-fbsdk 作为依赖项来实现。
dependencies {
     ...
     implementation project(':react-native-fbsdk')
}

然后再次运行安卓。

0

我和你遇到了同样的问题。我已经成功编译了这个项目,没有使用 FBSDKPackage,但我找不到任何解决方案。

至于其他部分,如果 rnpm 没有起作用(在我的情况下没有),你首先需要在 build.gradle(Module: app)文件中更新依赖项并添加

compile "com.facebook.android:facebook-android-sdk:[4,5)"

同步过程完成后,请更新您的MainApplication.java(不是MainActivity),以便它具有以下方法。

MainApplication.java

public class MainApplication extends Application implements ReactApplication { 

private static CallbackManager mCallbackManager = CallbackManager.Factory.create();

  protected static CallbackManager getCallbackManager() {
    return mCallbackManager;
  }

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage()
      );
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
      return mReactNativeHost;
  }

  @Override
  public void onCreate() {
      super.onCreate();
      // Initialize the SDK before executing any other operations,
      FacebookSdk.sdkInitialize(getApplicationContext());
      AppEventsLogger.activateApp(this);
  }
}

在你的MainActivity.java中,你需要更新onActivityResult方法,使其使用MainApplication的回调管理器的onActivityResult方法。

MainActivity.java

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   MainApplication.getCallbackManager().onActivityResult(requestCode, resultCode, data);
}

你也移除了fbsdkpackage的导入吗? - Shariq Musharaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接