OAuth Security Guide: Common Vulnerabilities and How to Prevent Them