Skip to content

Instantly share code, notes, and snippets.

@meenabassem
Last active June 16, 2021 21:47
Show Gist options
  • Save meenabassem/90dbf5633a695a6523a5a27b73dfa988 to your computer and use it in GitHub Desktop.
Save meenabassem/90dbf5633a695a6523a5a27b73dfa988 to your computer and use it in GitHub Desktop.
FacebookModule.java - expo-facebook - where the error came from
//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