I just changed the URLs for my entire website. I have set up 301 permanent redirects for all old URLs to new URLs. Rel=canonical are set to new URLs.
All Facebook Like buttons count have returned to 0. Any way to get the original count showing on the new URLs?

I have been experiencing the same problem and just found a good solution.

Specify your old url in your like button html code (fb:like) so that you can fetch your original like/share count. When someone likes it, it will be published on his/her wall as your old link which does not exist anymore. So you need to do two things:

1) Make sure your old url exists (via url rewriting, keeping your old copy or whatever you can think of).

2) 301 redirect your old url to your new url.

You still need to display your old url in the Like button html code though. Hope this helps.

I just tried this. The like button on my webpage displays the count from the original URL, Surprisingly, the URL which is displayed on my Facebook Wall is the "new" URL which is great, as the old URL is history and I don't want it promoted anymore. Disappointingly, the Like count is only increased for the old URL and not the new URL. I'm not sure why this is, as Facebook is displaying the new URL within Facebook, so why not increase the like count for the new URL also? Unfortunately, since the new URL is not receiving any new likes, this is not an acceptable solution.
– donxytheNov 16 '11 at 15:35

Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).