OAuth は Authorization Delegation Protocol = 認可をデリゲーションするためのプロトコルであって、ユーザ認証のためのプロトコルではないからです[5]。はっきり言って、楽ちんだからといって、それを単体で認証の代わりに使っている方が悪い。
実は、Facebook もこのことは気づいていて、signed_request というAPIを持っています。これはほとんど OpenID Connect と同じです[2]。Facebook でログインするためには、こちらを使わなければいけないのです。scope=signed_request ってやるんですよ。でも、使っている人、どれくらい居ますか?やってます?ほとんどは、access token を取得するための client side flow (Facebook のデフォルト) を認証の代わりにつかっちゃってますよね?!