How to use author’s avatar as Facebook post preview image when a single post is shared

From your comments, it seems you want to replace the post preview on facebook. This could be hard, because you try to modify the behavior of another webpage. With the opengraph protocol it can be done.

add_action( 'wp_head', 'get_facebook_meta_tags', 10, 0 );

function get_facebook_meta_tags() {
    global $post;

    // bail if the post is not in single view
    if ( ! is_single() )
        return;

    // get the url from post authors avatar (if available) or the url of post thumbnail
    // bails if no image was found
    $img_url = set_facebook_preview_image();
    if ( empty( $img_url) )
        return;

    // set description. use the first 97 chars from post excerpt (if available) or post content (alternativly)
    // add '...' to description
    $description = ( ! empty( $post->post_excerpt ) ) ? $post->post_excerpt : $post->post_content;
    if ( strlen( $description ) > 100 )
        $description = substr( $description, 0, 97 ) . '...';

    // create meta tags
    $format="
    <meta property="og:title" content="%s" />
    <meta property="og:type" content="article" />
    <meta property="og:url" content="%s" />
    <meta property="og:image" content="%s" />
    <meta property="og:site_name" content="%s"/>
    <meta property="og:description" content="%s" />";

    printf(
        $format,
        esc_attr( $post->post_title ),
        esc_attr( get_permalink( $post->ID ) ),
        esc_attr( $img_url ),
        esc_attr( get_bloginfo( 'name', 'raw') ),
        esc_attr( $description )
    );

}


function set_facebook_preview_image() {
    global $post;
    if ( ! is_object( $post ) || empty( $post ) )
        return false;

    // get the autor id and url from authors avatar (if available)
    // add a filter on get_avatar. this filter returns an empty string if a default avatar is returned
    add_filter( 'get_avatar', 'no_avatar_for_fb_preview_image', 0, 5 );
    $author_id = isset( $post->post_author ) ? $post->post_author : '';
    if ( empty( $author_id) )
        return false;
    $author_avatar_html = get_avatar( $author_id );
    // do not forget to remove the filter!!
    remove_filter( 'get_avatar', 'no_avatar_for_fb_preview_image', 0, 5 );

    // grab avatar url from avatar html string
    if ( ! empty( $author_avatar_html ) ) {
        preg_match( '#(?<=src\=["|\']).+(?=["|\'](\s|\/\>))#Uuis', $author_avatar_html, $url );
        $author_avatar_url = ( isset( $url[0] ) && ! empty( $url[0] ) ) ? $url[0] : '';
    }

    // get the url fromj post thumbnail
    $post_thumb_url  = wp_get_attachment_url( get_post_thumbnail_id( $post->ID ) );

    // set url to author avatar url with fallback to post thumbnail url
    $img_url="";
    if ( ! empty( $author_avatar_url ) )
        $img_url = $author_avatar_url;

    if ( empty( $img_url ) && ! empty( $post_thumb_url ) )
        $img_url = $post_thumb_url;

    return $img_url;
}

function no_avatar_for_fb_preview_image( $avatar, $id_or_email, $size, $default, $alt ) {
    if ( ! empty( $default ) )
        return '';
}

The first function hook into wp_head and checks if the page is a single view. If so, it try to fetch a image url (post thumbnail or author avatar url). If it can fetch an url, it will display the needed meta tags.
The second function grabs the avatar url and post thumbnail url. It uses a filter for the case a user does not have an avatar. In this case, it returns an empty string and the url of the post thumbnail will be returned.