7

ユーザーがFacebookでサインアップ/サインインできるようにするアプリを構築しています。その後、ユーザーは(常にFacebook経由で)「メイン」Webサイトにログインできる必要があります

正直に言うと、これよりも少し複雑です。これは、メイン Web サイトで django -tastypiedjango-allauthを使用して、サインアップ、ログイン、およびAPIの閲覧を許可しているためです。

基本的には、モバイル アプリのユーザーに Tastypie API を閲覧させ (ログに記録されていて、メイン Web サイトのユーザーである場合にのみアクセス可能)、行を追加する権限 (注文など) を彼に付与したいと考えています。

これが私が持っているものです

  • Facebookログインが機能するphonegapアプリ(私は現在取り組んでいます)
  • allauth の Facebook ログインを使用して新規ユーザーとして登録する django-allauth と django-tastypie を含む Web サイト
  • モバイル ユーザーが Facebook 経由でサインアップしている場合、メインの Web サイトにトレースがありません(これが問題です)。

私は基本的に、アクセス トークンをどのように扱うべきか、さらにパラメーターを渡す方法について混乱しています (登録を完了するために Facebook 情報だけが必要なわけではありませんが、いくつかのカスタム フィールドも必要です)。

誰かがこれについて経験したことがありますか、それとも彼のワークフローを公開したいですか?

4

1 に答える 1

15

一般的な方法の 1 つは、すべての登録関連の機能を Web サイトに任せることです。phonegap アプリでは、アプリ内ブラウザー (IAB) を使用して、ユーザーを /accounts/login/ に誘導するだけです。IAB には、監視する必要があるloadstartやなどのイベントがあります。exitユーザーが正常にログインしたかどうかを監視する簡単な方法は、ログインの最後に /accounts/login/complete/ などの特定の URL にユーザーをリダイレクトさせることです。そのリターン URL にトークンを添付すると (/accounts/login/complete/?token=123 のように)、アプリでそのトークンを解析できるようになります。セッション ID をトークンとして単純に使用できます。

より安全な方法は、django-oauth2-provider アプリを使用して、実際に適切な oauth ハンドシェイクを実装することです。ほぼ同じ扱いです。IAB open /oauth/authenticate/ を使用すると、allauth を使用してログインするよう求められます。その後、oauth2 確認ダイアログが表示され、その後、oauth 付与コードが成功 URL に渡されます。そのコードを phonegap から取得し、phonegap アプリ内から AJAX 呼び出しを使用して、oauth アクセス トークンを取得できます。ところで、django-rest-framework には django-oauth2-provider のサポートが組み込まれています (tastypie については知りません)。

まったく異なるアプローチは、Web サイトから完全に独立して、モバイル アプリに Facebook ログインを実装することです。ログインすると、Facebook のアクセス トークンが渡されます。これで、このトークンを Web サイトに送信できます。トークンが与えられると、Web サイトはユーザー ( https://graph.facebook.com/me?access_token=.. . ) をフェッチし、そのユーザーが既に知られているかどうかを確認し、知られている場合は適切なトークン/セッションを返すことができます。そうでない場合は、ユーザー アカウントを作成し、トークンも返します。

于 2013-05-30T20:46:17.500 に答える