I use both BuddyPress and bbPress.
Simple Facebook Connect plugin can replace WP avatar with FB profile picture if a user has connected his/her WP account with FB account in profile settings page.
This FB profile picture is displayed in toolbar, Sidebar Login plugin, posts, comments, and bbPress, but not in BuddyPress.
So I modified functions.php in my child theme.
We can get FB profile picture URL if we know its FB user ID.
And we can get FB user ID if we know its WP user ID.
But there is no single way to get WP user ID for all BuddyPress pages. Every component has its own way, even in one page.
In activity post and comment post forms, they use bp_loggedin_user_id().
In other components, usually a global variable is used.
For example:
In members directory
global $members_template;
$user_id = $members_template->member->id;
In activity streams
global $activities_template;
$act_uid = $activities_template->activity->user_id;
$com_uid = $activities_template->activity->current_comment->user_id;
But after I used preg_replace() for user avatar in some components, it also changed avatars in other places, like sidebar.
I didn’t like it, so I needed some limits for every avatar changes.
Then I found a WP function do_action() is used in some places in BuddyPress.
With function did_action(), we can retrieve the number of times an action is fired.
So I used them as my limits. One did_action() before the component, and one did_action() after the component.