2

この問題は、stackoverflow では非常に一般的であり、さまざまな質問と回答がありますが、必要なものを正確に見つけることができませんでした。

まず、必要なものを正確に定義したいと思います。それは、ユーザーが Facebook 資格情報を使用してアプリにログインできるようにするオプションです。アプリは、一致する従来の Django ユーザーを保存します。ユーザーのプロフィール写真を使用し、毎回同じ Facebook ユーザーが一致する Django ユーザーに関連していることを確認するだけで済みます。

残念ながら、次の理由で実装するのは本当にイライラします。

  1. たくさん読んだ後でも、このタスクに最適なパッケージを見つけることができませんでした。
  2. django-social-auth を推奨し、その機能とドキュメントを称賛する人もいます。個人的には、Facebook に特化したものではなく、クライアント側、つまり Facebook のログイン ボタンとフロー全体がどのように機能するかについての説明がないため、その理由がわかりません。
  3. Facebook の開発者のところに行くと、突然、魔法の JavaScript SDK と、必要なだけの約束について読んでいることに気がつきます。その後、再びイライラし、クライアント側関連の SDK がユーザーをアプリにサインアップする方法を理解できなくなります。

開発者が何らかの方法で Facebook 認証パッケージをアプリに実装していることは知っていますが、その方法がわかりません。

誰かが私に言うことができれば: この時点で、私の Django アプリに Facebook 認証を追加する最良の方法は何ですか? また、設定や構成レベルから Django アプリやクライアント側コードへのサインアップまで、Facebook ユーザーにログインする方法を説明する詳細なドキュメント/チュートリアルもお願いします。

4

3 に答える 3

3

問題に取り組むには複数の方法がありますが、「最良の」方法は本当に主観的なものです。

主観的に言えば、あなたは選ぶことができますdjango-allauth。開始するのに役立ついくつかのヒントを次に示します。

  • サインアップをシンプルに保ちたい場合は、「質問なし」のログインを実現するために に設定SOCIALACCOUNT_AUTO_SIGNUPします。Trueユーザーは FB ダイアログを承認するだけで、すぐにサイトにログインできます。

  • テンプレートにログイン ボタンを追加するには、次のことを行うだけです。

    <a href="{% provider_login_url "facebook" %}">Sign In</a>

  • アプリは JS SDK ログインのサポートを提供します (長所: ユーザーは、表示される典型的な FB ポップアップに慣れています)、または独自の OAuth フローを使用できます。何でもどうぞ。

于 2012-09-01T11:25:56.610 に答える
1

FB の Oauth 2.0 フローを理解する最も早い方法は、FB の Javascript SDK を試してみることです。こつをつかめば、FB の PHP ライブラリも同様です。また、Google、Twitter、Dropbox などの他の OAuth サイトの実装もほぼ同じです。

ベイビーステップで:

  1. シンプルなページにFB Javascript SDKをインストールする方法を学ぶ

  2. FB.loginを使用して、ログイン ステータスを判断し、ログイン URL を取得します。

  3. 最後に、FB.Event.Subscribe を使用してauth.statusChangeにサブスクライブし、ログイン/ログアウトの変更を検出します。

また、今後の機能や削除される機能について、https://developers.facebook.com/roadmap/を確認してください。

于 2012-09-01T03:57:40.347 に答える
0

django-social-auth は Facebook だけのものではありませんが、利用可能なすべてのバックエンドを使用する必要があるという意味ではありません。

プロジェクトのドキュメントはhttp://django-social-auth.readthedocs.org/en/latest/index.htmlにあり、Facebook バックエンドの詳細はhttp://django-social-auth.readthedocs.org/en/latest/backends/にあります。 facebook.html .

于 2012-09-01T00:16:27.957 に答える