But this is only for JavaScript clients, right? I believe all the OAuth APIs I've consumed from Python send access_token in the query string.
If there were a mitm they could get it even if it's in the hash. It has to travel to the client at some point.
of course it's visible in server-2-server, but not client-server