LoginManager.logInWithReadPermissions未在react-native-fsdk中调用回调

时间:2018-12-14 13:02:09

标签: react-native react-native-fbsdk

我正在尝试使用react-native-fsdk在android中进行登录。我已经安装并设置了应用程序中的所有内容。但是,当我单击ligon按钮时,其打开的Facebook并征求许可。授予权限后,不提供任何数据或任何错误。我尝试过任何解决方案,但都没有成功。

我正在android的模拟器中对此进行测试

This is Login code :

LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_birthday', 'user_likes']).then(
      function(result) {
        if (result.isCancelled) {
          alert('Login was cancelled');
        } else {
          alert('Login was successful with permissions: '
            + result.grantedPermissions.toString());
        }
      },
      function(error) {
        alert('Login failed with error: ' + error);
      }
    );

This is my maainApplication.java

import com.facebook.CallbackManager;
import com.facebook.reactnative.androidsdk.FBSDKPackage;

public class MainApplication extends NavigationApplication {


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

    protected static CallbackManager getCallbackManager() {
      return mCallbackManager;
    }

    @Override
    public boolean isDebug() {
      // Make sure you are using BuildConfig from your own application
      return BuildConfig.DEBUG;
    }

    protected List<ReactPackage> getPackages() {
      // Add additional packages you require here
      // No need to add RnnPackage and MainReactPackage
      return Arrays.<ReactPackage>asList(
        // eg. new VectorIconsPackage()
        new FBSDKPackage(mCallbackManager)
      );
    }

    @Override
    public List<ReactPackage> createAdditionalReactPackages() {
      return getPackages();
    }

}


  MainActivity.java

 import android.content.Intent;
  import com.facebook.CallbackManager;
  import com.facebook.FacebookSdk;
  import com.facebook.reactnative.androidsdk.FBSDKPackage;

  public class MainActivity extends SplashActivity {

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

任何建议将不胜感激。谢谢

2 个答案:

答案 0 :(得分:2)

logInWithReadPermissions是react-native-fbsdk版本0.8.0中的方法。

您应该使用logInWithPermissions,因为您的版本是react-native-fbsdk 0.10.0。

答案 1 :(得分:1)

尝试一下:

import { LoginManager, LoginButton, AccessToken, GraphRequest, GraphRequestManager } from 'react-native-fbsdk';

export function facebookLogin() {
    return new Promise((resolve, reject) => {
        LoginManager.logInWithReadPermissions(["public_profile, email"]).then(function (result) {
            AccessToken.getCurrentAccessToken().then((data) => {
                const accessToken = data.accessToken;
                const responseInfoCallback = (error, result) => {
                    if (error) {
                        console.log(error);
                        console.log('Error fetching data=', error);
                    } else {

                        console.log("face",reslet imagePath = null;

                };
                const infoRequest = new GraphRequest(
                    '/me',
                    {
                        accessToken,
                        parameters: {
                            fields: {
                                string: 'email,name,first_name,middle_name,last_name, picture.type(large)',
                            },
                        },
                    },
                    responseInfoCallback,
                );
                new GraphRequestManager().addRequest(infoRequest).start();
            });
        }, function (error) {
            console.log("Login fail with error: " + error);
            resolve(false);
        });
    })
}