1

プロジェクトで python-social-auth を使用して、Github でユーザーを認証しています。ユーザーが使用するリンクに応じて、ユーザーをリダイレクトする必要があります。そのために、URL で次の属性を使用しています。また、django 設定でも、github アプリでもリダイレクト URL を宣言しませんでした。

これは、リンクに使用している href 属性です。{% url 'social:begin' 'github' %}?next={% url 'apply' j.slug %}

初めてクリックすると、URL フィールドに次のエラーが表示され、ホームページにリダイレクトされます。http://127.0.0.1:8000/?error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.&error_uri=https%3A%2F%2Fdeveloper.github.com%2Fv3%2Foauth%2F%23redirect-uri-mismatch&state=Ui1EOKTHDhOkNJESI5RTjOCDEIdfFunt

しかし、初めてリンクが機能した後。

どこに問題があるのか​​ わかりません。誰かが私を助けてくれることを願っています。ありがとう

4

3 に答える 3

4

このライブラリは、GitHub 認証にOAuthを使用します。

OAuth プロセスでは、認証プロセスの一環として、ユーザーのブラウザーが実際にサイトを離れることになるため、コールバック URL を提供する必要があります。GitHub に送信するコールバック URL は、ユーザーサイトにリダイレクトするために使用されます。

ただし、Python Social Authがこれの一部を処理しているように見えます (私の強調):

GitHub

Github は Facebook (OAuth) と同様に機能します。

  • GitHub Developersで新しいアプリケーションを登録し、コールバック URL を自分のドメインにhttp://example.com/complete/github/置き換えるexample.comように設定します。

  • App Id設定に値を入力App Secretします。

    SOCIAL_AUTH_GITHUB_KEY = ''
    SOCIAL_AUTH_GITHUB_SECRET = ''
    
  • また、以下を使用して追加の権限を定義することもできます。

    SOCIAL_AUTH_GITHUB_SCOPE = [...]
    

難しいのは、これを開発マシンで動作させることです。

hostsファイルでドメインを127.0.0.1に設定すると、次のように機能するはずです

127.0.0.1   example.com

ただし、本番環境に移行したら、このようにコメントアウトしてください。

GitHub の OAuth ドキュメントも参照してください。ライブラリを使用することは素晴らしいことですが、基礎となるテクノロジを理解していれば問題は少なくなります。

于 2014-04-29T12:06:32.733 に答える
0

を使用するだけで、ログインリダイレクトURIの不一致を解決しましたhttp://127.0.0.1:8000/

于 2020-07-26T11:29:46.867 に答える
0

それは働いた

hostsファイルでドメインを127.0.0.1に設定すると、次のように機能するはずです

127.0.0.1 example.com

于 2019-07-12T17:49:17.400 に答える