I have been banging my proverbial head against a brick wall (or my actual head against a proverbial wall) for the best part of a few days, on and off, trying to find the cause of an inconsistency in behaviour between Safari and Chrome in a Facebook canvas app.
In the pursuit of the answer to the question ‘why doesn’t it work in Safari’ I explored a number of avenues, thrown off the scent in part by a confusing cross-domain error message. I’m in no mood to go into details, but for anyone treading the same path, the solution to this problem is … the channel file.
The Facebook API documentation says that including the channelUrl is optional, but I found to my cost that some browsers use it (or are tolerant of its absence) where Safari isn’t. The app worked fine for Firefox, Chrome, IE, but in Safari the login window just froze. There were no error messages in the console saying that the channel file couldn’t be loaded or any other hint. (I now realise that the error would have been in a different console to the main window anyway).
So there you have it. If you’re doing a Facebook app, make sure your channels file is correct and available.