GitHubでoauth2を正常に動作させることに問題があるすべての人に、解決策をご紹介します。
問題点:Discourseのoauth2プラグインは、GitHubと設定フィールドが適切に設定されていない場合、500エラーを生成します。ドキュメントは何をどう設定するかについてあまり触れていないので、重要な(およびいくつかの任意の)フィールドは以下の通りです:
OAuth2 client ID GitHubから取得したクライアントID
OAuth2 client secret GitHubから取得したクライアントシークレット
OAuth2 authorize URL https[:]//github[.]com/login/oauth/authorize
OAuth2 token URL https[:]//github[.]com/login/oauth/access_token
OAuth2 token URL method POST
OAuth2 user JSON URL https[:]//api.github[.]com/user
OAuth2 user JSON URL method GET
OAuth2 JSON user ID path id
OAuth2 JSON username path login
OAuth2 JSON name path name
OAuth2 JSON email path mail
OAuth2 JSON avatar path avatar_url
OAuth2 send auth header x
OAuth2 send auth body x
OAuth2 allow association change x
デバッグ用(あくまで):
OAuth2 debug auth x
GitHub側についても、必要な情報が抜けている場合に備えて、以下の内容です:
https[:]//github[.]com/settings/developersにアクセスし、「New OAuth App」をクリックします。
アプリケーション名(例:Discourse)、
ホームページURL
および
承認コールバックURL(https[:]//YOUR.DISCOURSESERV[.]ER/auth/oauth2_basic/callback)を入力し、「Update application」を忘れずにクリックしてください。
これで完了です。
役に立てば幸いです!
この後、開発者に対して、「OAuth2 user JSON URL」必要項目が空のために生じる(無効な)戻り値を確認してもらいたいです。これが原因でエラーが発生し、500エラーになります。
ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column “provider_uid” of relation “user_associated_accounts” violates not-null constraint
URLの匿名化については申し訳ありません。新規ユーザーは1投稿につき2つまでリンクを持てるという仕様だそうです。