実装の面倒くさい度
Google == LINE == GitHub == FaceBook < Twitter
- OAuth2.0 OpenID対応
- 開発者サイト https://console.developers.google.com/
- RedirectURL複数可
- https://developers.google.com/identity/protocols/oauth2/web-server
認証に使うだけなら審査は不要
LINE
- OAuth2.0 OpenID対応
- 開発者サイト https://developers.line.biz/console/
- https://developers.line.biz/ja/docs/line-login/integrate-line-login
特に何もなし
GitHub
- OAuth2.0
- 開発者サイト https://github.com/settings/developers
- https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/
OpenIDに対応していないのでユーザーIDやアイコン画像を取得するには別のエンドポイントを叩く必要あり
- OAuth2.0
- 開発者サイト https://developers.facebook.com/apps/
- RedirectURL複数可
- https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow
こちらもOpenIDに対応していないのでユーザーIDやアイコン画像を取得するには別のエンドポイントを叩く必要あり。開発者サイトのUIがわかりにくい。
- OAuth1.0
- 開発者サイト https://developer.twitter.com/en/apps/
- RedirectURL複数可
- https://developer.twitter.com/en/docs/basics/authentication/guides/log-in-with-twitter
アプリの審査はないが、開発者アカウントを作成するときに英語でいろいろ回答しなければいけない。最終的には承認してもらえるけど結構リジェクトされて面倒くさい。
こちらもOpenIDに対応していないのでユーザーIDやアイコン画像を取得するには別のエンドポイントを叩く必要あり。SSLを前提としていないOAuth1.0なのでリクエストに署名する必要あり。署名作成方法についてはここで解説するよりも公式ドキュメントを読んだほうが確実なのでこれに従う。値の例が書いてあるので署名作成関数を作って同じ値になるか確かめたほうが効率が良い。
state
state
パラメータによってユーザーの識別が行える。OAuth1.0ではこのパラメータはないので、ユーザーログイン用URLを作成するときに発行されたoauth_token
を代わりに使用する。
結論
OAuth1.0は面倒くさい