A big problem not addressed when not using a signature based authorization scheme is that you need to hit your database for every access attempt. This makes you much more susceptible to ddos attacks.
You need to be able to turn away malicious users as fast as possible. If you take the time to check a database first, that's a precious resource they can consume.
"Add a cache!", you might say? What if they use random client id and client secret for every request, how do you cache against that?