It's entirely possible that you are calling
the_author_meta() from outside of your post loop in the
author.php template in which case the above will not work.
Instead, you can use
get_the_author_meta('facebook', $user_id) where
$user_id is the ID# of the current user/author.
To get the user ID you can do this;
<a href="<?php $id = get_current_user_id(); get_the_author_meta('facebook`, $id); ?>"
class="facebook" title="Facebook"> ??NO TEXT TO CLICK?? </a>
Notice we assigned the variable
$id = get_current_user_id(); and then pass that along to our
??NO TEXT TO CLICK?? is not an error - you literally have no text between your anchor tags for people to click which could be why you're not seeing anything.
the_author_meta($field, $userID) - works inside & outside of loop / will echo values.
get_the_author_meta($field, $userID) - works inside & outside of loop / will return values.
** when inside the loop, the $userID does not need to be specified if you want the meta data for that post author, otherwise using the ID parameter in the loop allows you to get the specific user meta for which the ID you pass in.
Its not entirely necessary to specify the user_id parameter, unless you would like to grab the data of another user whom is not the current post author however as an added measure by passing that value along it may help you solve your issue. Both functions accept the user_id parameter by the way.
So to recap,
Check the context of where you are calling your function from, is it within the loop or outside of the loop? Depending upon where within your author.php template you are calling from, choose the appropriate function as described above. Optionally pass the user ID if you want to be doubly sure.
Check whether or not the fact you have no text
<a href"#">between</a> you href anchor is in fact causing you the problem, unless you are injecting the link or styling the link/div with a width/height/background then this is the likely culprit and why you are not seeing anything.