8

Dropbox や LinkedIn などの他のサービスと統合するシングル ページ アプリがあります。たとえば、Dropbox には優れた API があり、別のウィンドウで Dropbox の認証リンクを開くことで認証が機能しました。ユーザーが認証されたら、その新しいウィンドウを閉じてアプリに戻るように依頼します。

明らかに、これはユーザーを私のアプリから遠ざけるので最適ではなく、タブレットではさらに面倒です。

ライトボックスやモーダルフォームなど、アプリ内で認証を行うにはどうすればよいですか?

統合自体はクライアント側ではなくサーバー側で行われることに注意してください。現在、Dropbox の認証ページには、認証が成功したことをサーバーに通知するコールバック ページがあります。このページは、後で使用するためにデータベースのユーザーのテーブルに保存されます。

注:報奨金のコメントは次のようになります。コード サンプルは非常に望ましいですが、必須ではありません。

4

3 に答える 3

11

あなたが提案しているのは、セキュリティ モデルを無効にすることなので、それは不可能です。ユーザーは、確認のために実際のページの URL を表示できる必要があります。Paypal で支払いを行うとき、重要なデータを入力する前に、paypal.com にアクセスしていることを確認することを想像してみてください。同じことが他のすべてのアプリにも当てはまります。これは非常に醜い流れですが、業界が今日思いついた最高のものです。

理想的なフローは、ユーザーをサードパーティの Web サイトまたはアプリにリダイレクトし、ユーザーがログインして承認し、リダイレクトして戻ってくるというものです。ネイティブ アプリには、別のネイティブ アプリに切り替える利点があるため、フローは少し見苦しくなくなります。

あなたが望むことを行う回避策は、アプリがサードパーティのサービスにユーザー名とパスワードを要求し、舞台裏で認証ダンスを行うことです。これは、ユーザーをアプリから遠ざける可能性が高く、非常に危険です。お勧めしません。

于 2012-08-31T14:00:39.037 に答える
4

Webページのiframeに認証エンドポイントをロードできます。ただし、一部のブラウザでは、iFrame内のログインプロバイダーに送信されるCookieに制限があることに注意してください。通常(Safari、iOS)は、Cookieへの読み取りアクセスのみがあります。これは、セッションCookieがプロバイダーで既に設定されている場合に十分です。

コールバックページ-認証後にドロップボックスから返送されます。認証が行われると、親ページでイベントをトリガーするためにjavascript関数を呼び出す必要があります。

window.parent.AppController.authenticationComplete();

次に、親はiframeを削除し、認証済みとして続行できます。

authenticationCompleted = function() {
     // [snipp]
     $("iframe#loginwrapper").remove();
}

Cookieの問題が発生する可能性があるため、メインのHTMLページが提供される前に、サーバー側から開始されたすべての認証手順を実行することをお勧めします。次に、アプリが2回読み込まれないことを確認します。これは、多くの認証/IDミドルウェアソフトウェアソリューションの典型的な動作です。


アプリについて言及するとき、それが純粋なWebAppを意味するのか、それともPhonegapなどのフレームワークを使用してハイブリッドアプリで使用できるコントロールがあるのか​​は不明です。Phonegapなどを使用すると、アプリ内のブラウザー内にブラウザーをロードできます。その場合、ChildBrowserは同じCookie制限で制限されません。

私は最近、iOS用のPhonegapとChildbrowserでこれを機能させる方法についてのチュートリアルを書きました。

このチュートリアルは、OAuth1.0とは多少異なるOAuth2.0の使用に関するものであることに注意してください。

于 2012-08-29T19:17:57.427 に答える
0

アプリが Web アプリの場合、フローを合理化する最善の方法は、現在のページを Dropbox の /authorize ページにリダイレクトすることです (例: JavaScript/jQuery で別の Web ページにリダイレクトする方法は? )。プロセスが完了したことを示すアプリのページ。

このように、フローは次のとおりです。

  1. (アプリで) ユーザーがボタンをクリックして OAuth フローを開始する
  2. (アプリが Dropbox 承認ページにリダイレクトされます) ユーザーがアプリを承認します
  3. (Dropbox は oauth_callback ごとにアプリにリダイレクトします) アプリはアクセス トークンを取得し、統合を使用する準備ができています

そして、これはすべて、余分なウィンドウを閉じたり開いたりすることなく、1 つのページ内で行われます。

于 2012-07-04T19:52:51.860 に答える