通常のdjangoユーザーログイン、またはGoogleまたはgithubソーシャルログインを使用してユーザーをログインさせるdjango-allauthを使用してアプリケーションを実装しました。これは今のところ問題なく動作しているようです。ユーザーは、Google または github アカウントを使用して、または通常の django アカウントを使用して、このアプリケーションにログインできます。
これで、ユーザーはこのアプリケーションに多数のリソースを追加できるようになりました。REST API を使用して別のアプリケーションからアクセスしたいと考えています。したがって、最初のアプリケーションは oauth2 プロバイダーである必要があります。django-oauth-toolkit (python-oauthlib を使用) を使用して実装してみました。
いずれにせよ、見つかったプロバイダーを作成するためのチュートリアルに従ってみました: here https://django-oauth-toolkit.readthedocs.org/en/0.7.0/tutorial/tutorial_01.html。すべての手順が正常に完了したので、(チュートリアルで提案されているように) プロバイダーをテストするためにhttp://django-oauth-toolkit.herokuapp.com/consumer/にアクセスしました。
そのため、アクセスを要求すると、アプリケーションへのログイン画面が表示されました。通常のdjangoユーザーでログインしようとすると、すべて問題なく、プロバイダーへのアクセスを許可できました. ただし、ソーシャル アカウントでのログインは成功しませんでした。「Github」をクリックして github アカウントでログインしました -- 通常の github ログイン画面が表示されましたが、github でログインした後、django-allauth エラー ページが表示されました (ソーシャル ネットワーク アカウント経由でログインしようとしたときにエラーが発生しました)。実際に stage だったのは、URL の get パラメーターに次のエラーがあったことです。
error=redirect_uri_mismatch & error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.
何が問題なのですか?
また、より一般的な質問: 同様のフローを見つけることができませんでした (他のoauth プロバイダーを使用してログインする oauth プロバイダーを使用)。実際にそれを行うことは可能ですか?
更新:http://127.0.0.1:8000/
結局のところ、ローカルの oauth2 プロバイダーに使用していた問題がありましたhttp://localhost:8000/
が、テスト コンシューマー ( http://django-oauth-toolkit.herokuapp.com/consumer/ )の認証 URL に書き込みました。 . それがredirect_url_mismatch
エラーが発生した理由でした-すべてが正常に機能するように変更した後http://127.0.0.1:8000/
-そしてそれが私の2番目の質問に答えます:oauthプロバイダーをチェーンできます!!!