Last active
June 16, 2021 21:47
-
-
Save meenabassem/90dbf5633a695a6523a5a27b73dfa988 to your computer and use it in GitHub Desktop.
FacebookModule.java - expo-facebook - where the error came from
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Source: https://github.com/expo/expo/blob/master/packages/expo-facebook/android/src/main/java/expo/modules/facebook/FacebookModule.java#L153-L217 | |
@ExpoMethod | |
public void logInWithReadPermissionsAsync(final ReadableArguments config, final Promise promise) { | |
if (FacebookSdk.getApplicationId() == null) { | |
promise.reject(ERR_FACEBOOK_MISCONFIGURED, "No appId configured, required for initialization. " + | |
"Please ensure that you're either providing `appId` to `initializeAsync` as an argument or inside AndroidManifest.xml."); | |
} | |
// Log out | |
AccessToken.setCurrentAccessToken(null); | |
LoginManager.getInstance().logOut(); | |
// Convert permissions | |
List<String> permissions = (List<String>) config.getList("permissions", Arrays.asList("public_profile", "email")); | |
if (config.containsKey("behavior")) { | |
LoginBehavior behavior = LoginBehavior.NATIVE_WITH_FALLBACK; | |
switch (config.getString("behavior")) { | |
case "browser": | |
behavior = LoginBehavior.WEB_ONLY; | |
break; | |
case "web": | |
behavior = LoginBehavior.WEB_VIEW_ONLY; | |
break; | |
} | |
LoginManager.getInstance().setLoginBehavior(behavior); | |
} | |
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { | |
@Override | |
public void onSuccess(LoginResult loginResult) { | |
LoginManager.getInstance().registerCallback(mCallbackManager, null); | |
// This is the only route through which we send an access token back. Make sure the | |
// application ID is correct. | |
if (!mAppId.equals(loginResult.getAccessToken().getApplicationId())) { | |
promise.reject(new IllegalStateException("Logged into wrong app, try again?")); | |
return; | |
} | |
Bundle response = accessTokenToBundle(loginResult.getAccessToken()); | |
response.putString("type", "success"); | |
promise.resolve(response); | |
} | |
@Override | |
public void onCancel() { | |
LoginManager.getInstance().registerCallback(mCallbackManager, null); | |
Bundle response = new Bundle(); | |
response.putString("type", "cancel"); | |
promise.resolve(response); | |
} | |
@Override | |
public void onError(FacebookException error) { | |
LoginManager.getInstance().registerCallback(mCallbackManager, null); | |
promise.reject(ERR_FACEBOOK_LOGIN, "An error occurred while trying to log in to Facebook", error); | |
} | |
}); | |
try { | |
LoginManager.getInstance().logInWithReadPermissions(mModuleRegistry.getModule(ActivityProvider.class).getCurrentActivity(), permissions); | |
} catch (FacebookException e) { | |
promise.reject(ERR_FACEBOOK_LOGIN, "An error occurred while trying to log in to Facebook", e); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment