2016-10-25 45 views
1

我得到了sdk为IOS工作,但对于Android来说,当我调用LoginManager.logInWithReadPermissions时,promise永远不会得到解决。 Modal显示,我插入Facebook的凭据,我授权的应用程序,模式关闭,但没有承诺的解决。LoginManager.logInWithReadPermissions在Android上从未解决

这是(工作IOS)

LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends', 'user_birthday']).then(
         function(result) { 
          console.log('Login success') 
          } else { 
           console.log('Login error') 
          } 
         }, 
         function(error) { 
          console.log('Login error') 
         } 
        ); 

MainApplication.java

package com.situa; 

import android.support.annotation.NonNull; 

import com.facebook.react.ReactPackage; 
import com.reactnativenavigation.NavigationApplication; 

import com.facebook.CallbackManager; 
import com.facebook.appevents.AppEventsLogger; 

import com.facebook.FacebookSdk; 
import com.facebook.reactnative.androidsdk.FBSDKPackage; 
import com.BV.LinearGradient.LinearGradientPackage; 
import com.react.rnspinkit.RNSpinkitPackage; 
import com.cmcewen.blurview.BlurViewPackage; 
import com.imagepicker.ImagePickerPackage; 
import com.airbnb.android.react.maps.MapsPackage; 
import com.learnium.RNDeviceInfo.RNDeviceInfo; 

import java.util.List; 
import java.util.Arrays; 

public class MainApplication extends NavigationApplication { 

    @Override 
    public boolean isDebug() { 
     return BuildConfig.DEBUG; 
    } 

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

    protected static CallbackManager getCallbackManager() { 
     return mCallbackManager; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 

     // If you want to use AppEventsLogger to log events. 
     AppEventsLogger.activateApp(this); 
    } 

    @NonNull 
    @Override 
    public List<ReactPackage> createAdditionalReactPackages() { 
     return Arrays.<ReactPackage>asList(
       new FBSDKPackage(mCallbackManager), 
       new LinearGradientPackage(), 
       new RNSpinkitPackage(), 
       new BlurViewPackage(), 
       new ImagePickerPackage(), 
       new RNDeviceInfo(), 
       new MapsPackage() 
     ); 
    } 


} 

MainActivity.java

package com.situa; 

import com.reactnativenavigation.controllers.SplashActivity; 
import android.content.Intent; 

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

在AndroidManifest

按钮点击代码

settings.gradle

include ':react-native-fbsdk' 
project(':react-native-fbsdk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fbsdk/android') 

的build.gradle

repositories { 
    mavenCentral() 
} 
dependencies { 
    compile project(':react-native-device-info') 
    compile project(':react-native-share') 
    compile project(':react-native-fbsdk') 
    compile project(':react-native-image-picker') 
    compile project(':react-native-geocoder') 
    compile project(':react-native-maps') 
    compile project(':react-native-blur') 
    compile project(':react-native-linear-gradient') 
    compile project(':react-native-spinkit') 
    compile project(':react-native-vector-icons') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:support-v4:23.4.0' 
    compile 'com.facebook.react:react-native:+' 
    debugCompile project(path: ':react-native-navigation', configuration: 'libraryDebug') 
    releaseCompile project(path: ':react-native-navigation', configuration: 'libraryRelease') 
} 

RN 0.35

[email protected]

react- native-fbsdk:0.3.0

Android模拟器SDK 23

+1

我看见你设法找到通过溶液[ GitHub的](https://github.com/wix/react-native-navigation/issues/410)。你愿意在这里发布它作为答案吗? –

回答

1

这里是在GitHub上的解决方案以供将来参考的要点:

在MainApplication.java补充一点:

@Override 
public void onCreate() { 
    super.onCreate(); 

    setActivityCallbacks(new ActivityCallbacks() { 
     @Override 
     public void onActivityResumed(Activity activity) { 
      // Do stuff 
     } 

     @Override 
     public void onActivityPaused(Activity activity) { 
      // Do stuff 
     } 

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

    FacebookSdk.sdkInitialize(getApplicationContext()); 

    // If you want to use AppEventsLogger to log events. 
    AppEventsLogger.activateApp(this); 
}