core-android/src/main/java/com/uber/sdk/android/core/auth/LoginManager.java
public void login(final @NonNull Activity activity) {
        boolean hasScopes = (sessionConfiguration.getScopes() != null && !sessionConfiguration.getScopes().isEmpty())
                || (sessionConfiguration.getCustomScopes() != null && !sessionConfiguration.getCustomScopes().isEmpty());
        checkState(hasScopes, "Scopes must be set in the Session Configuration.");
        checkNotNull(sessionConfiguration.getRedirectUri(),
                "Redirect URI must be set in Session Configuration.");

        if (!legacyUriRedirectHandler.checkValidState(activity, this)) {
            return;
        }

        SsoDeeplink ssoDeeplink = getSsoDeeplink(activity);

        if (ssoDeeplink.isSupported(SsoDeeplink.FlowVersion.REDIRECT_TO_SDK)) {
            Intent intent = LoginActivity.newIntent(
                    activity,
                    productFlowPriority,
                    sessionConfiguration,
                    ResponseType.TOKEN,
                    false,
                    true,
                    true);
            activity.startActivityForResult(intent, requestCode);
        } else if (ssoDeeplink.isSupported(SsoDeeplink.FlowVersion.DEFAULT)) {
            ssoDeeplink.execute(SsoDeeplink.FlowVersion.DEFAULT);
        } else if (isAuthCodeFlowEnabled()) {
            loginForAuthorizationCode(activity);
        } else {
            loginForImplicitGrantWithFallback(activity);
        }
    }
public void login(final @NonNull Activity activity) {
        boolean hasScopes = (sessionConfiguration.getScopes() != null && !sessionConfiguration.getScopes().isEmpty())
                || (sessionConfiguration.getCustomScopes() != null && !sessionConfiguration.getCustomScopes().isEmpty());
        checkState(hasScopes, "Scopes must be set in the Session Configuration.");
        checkNotNull(sessionConfiguration.getRedirectUri(),
                "Redirect URI must be set in Session Configuration.");

        if (!legacyUriRedirectHandler.checkValidState(activity, this)) {
            return;
        }

        SsoDeeplink ssoDeeplink = getSsoDeeplink(activity);

        if (ssoDeeplink.isSupported(SsoDeeplink.FlowVersion.REDIRECT_TO_SDK)) {
            Intent intent = LoginActivity.newIntent(
                    activity,
                    productFlowPriority,
                    sessionConfiguration,
                    ResponseType.TOKEN,
                    false,
                    true,
                    true);
            activity.startActivityForResult(intent, requestCode);
        } else if (ssoDeeplink.isSupported(SsoDeeplink.FlowVersion.DEFAULT)) {
            ssoDeeplink.execute(SsoDeeplink.FlowVersion.DEFAULT);
        } else if (isAuthCodeFlowEnabled()) {
            loginForAuthorizationCode(activity);
        } else {
            loginForImplicitGrantWithFallback(activity);
        }
    }
Logs a user in, requesting approval for specified {@link Scope}s.

@param activity the activity used to start the {@link LoginActivity}.