2013-08-13 11 views
12

Facebookの統合にdjango-allauthを使用するDjangoアプリを作成しています.iOSアプリのバックエンドにdjango-tastypieを使用しています。 iOSアプリはネイティブFacebook iOS SDKを使用します。 Facebookに登録しているユーザーとFacebook以外のユーザーの両方に、ウェブサイトに加えてiOSアプリからサインアップして確認できるようにしたいと考えています。django-allauthをtastypieで使用する正しい方法は何ですか?

django-allauthは、外部からアクセスできるAPIを持っていないようです。 allauthの機能にプラグインする唯一のきれいな方法は、Djangoのテンプレートタグを使っているようです。 tastypieで使用するためにこの機能を公開する方法はありますか?

Django-allauthはすべてオープンソースなので、コードを解析しようとしました。私の最初のアイデアは、ネイティブFacebook SDKを使用してiOS側のユーザーを認証し、SocialAccount、SocialTokenの情報を手動で入力し、SocialAccountをSocialAppに追加することです(これらはすべてdjango-allauthモデルです)。しかし、それはかなりハックな解決策であるようです。私はFacebookのID、またはそれに類するものを与えられたモデルをきれいに作成する方法が大好きです。

更新: GitHubでこの問題に関するいくつかのdiscussionが行われています。基本的に、組み込みの機能はまだありません。私はFacebookを扱うカスタム解決策を取り上げるつもりだ。なぜなら、これは私が自分のアプリケーションで使っているすべてのものだからだ。私はそれがうまくいくと、後でここで行ったことを投稿します。

答えて

0

facebook APIを扱うためにrequestsライブラリを使用しました。素晴らしいことですが、真剣に何かしたいのであれば、Djangoの社会的ログインプラグインは他の人には当てはまりません。

PS。私はdjango-rest-frameworkを使ってモバイルアプリの残りのバックエンドを構築しました。ローカルアカウントログインとソーシャルサイトログインも含まれていました。

1

django-allauthのクイックルックは、特定の認証方法とソーシャルアカウントの種類に関するデータを保持するためにSocialAccountモデルを使用していることを示しています。

SocialAccountモデルに基づいてAPIエンドポイントを作成する必要があります。アカウントタイプ(Facebook、ローカル、Twitterなど)、ソーシャル認証プロバイダが必要とする追加の認証変数などの変数を渡す必要があります。次に、コードでSocialAccountモデルインスタンスを作成し、APIエンドポイント呼び出しから受け取ったデータをフィードし、対応するauth呼び出しをdjango-allauthを介してトリガすることができます。最後に、authコールの結果を返す必要があります。

django-allauthをローカル/ facebook認証のみに使用する大きな理由はありませんが、若干の努力でソーシャル認証プロバイダの全範囲を持つことができます。

関連する問題