3

組み込みの WebView ブラウザがデフォルトのユーザー ブラウザの Cookie にアクセスできない場合、Android で OAuth 2.0 クライアント側認証を使用するポイントは何ですか? つまり、WebView で oauth-url (例: http://blablabla.com/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=token) を開くと、ユーザーは資格情報を入力して「blablabla.com」ソーシャル ネットワークにサインインするよう求められます。彼がすでにいくつかのブラウザー (Opera または Dolphin、または既定のブラウザー) でサインインしている場合でも、WebView ブラウザーは対応する Cookie について何も知らないためです。


編集:

もう少しわかりやすくしてみます。

主な目標は、アプリケーションでのサインイン手順を簡素化することです。多くの Web サイトで見られるようなメカニズムを実装したいと思います: 「Facebook/Google/Twitter などでログイン」。デスクトップ ブラウザーでは、このアプローチは完全に機能します。これは、エンド ユーザーが既にこのブラウザー内で目的のサービスにサインインしているためです。基本的に、彼が私のサイトにサインインするために必要なものは次のとおりです。

  1. 「サインイン...」ボタンを押します
  2. リダイレクトされたウィンドウ/ポップアップで、[承認/確認] を押します。
  3. すでにサインインしているため、リダイレクトされます。

主な利点は、ユーザーが自分の電子メール/名前などを入力する必要がないことです.私はすでに彼のソーシャルネットワークアカウントから抽出しています.

そして、Androidで同じ効果を得る方法を考えています。問題は、ご覧のとおり、ユーザーが外部サービスにサインインしているかどうかをアプリケーション (WebView) が認識できないため、ユーザーにパスワードの入力を回避させることができないことです。そのため、ユーザーはとにかく詳細の一部を入力するように求められ、OAuth のすべてのメリットが失われます。

4

2 に答える 2

2

回避策は、何をしようとしているのかによって異なります。ユースケースを説明していないため、質問をもう一度見てもわかりません。代わりに、共有 Cookie を使用して複数のアプリケーションにまたがる Android システム全体のログイン状態を維持するかのように、非常に広範に見える何かを間接的に要求しています。

セキュリティ上の理由により、良くも望まれません。不正なアプリは、他のアプリから要求された既存のアクセス トークンを使ってやりたいことを何でも実行できます。また、他のアプリで作成および管理されている既存の Cookie を調整したり、読み取ったりすることもできます。

ユーザーが WebView でログインできるようにすることで、OAuth 2.0 を使用して Web サービスへの独自のアプリ アクセスを承認しようとしていると仮定すると、独自のWebViewClientを実装し、その onPageStarted または onPageFinished メソッドをオーバーライドし、URL 引数がリダイレクトと一致するかどうかを確認する必要があります。 URL。

一致する場合は、URL 文字列からアクセス トークンを抽出する必要があります。使用可能な更新トークンもある場合は、それも抽出します。

(ただし、これは、リダイレクト URL にアクセス トークンを追加する特定のタイプの OAuth フローでのみ機能します。)

これで、少なくともアクセス トークンが利用可能になりました。そのトークンをアプリケーションの非公開設定に保存し、サービスから 401 承認されていないというエラー メッセージが返されるまで、サービス リクエストで使用します。その時点で、利用可能な場合は更新トークンを使用して新しいアクセス トークンを要求できます。または、ログイン WebView を再度表示する必要があります。

アプリから Google サービスにアクセスしようとしている場合は、Tasks API と OAuth 2.0 の概要に関する記事が役立つことがあります。

于 2012-06-30T14:56:36.837 に答える
0

ブラウザーを外部 (非埋め込み) で起動することを検討しましたか?

これは既存の Cookie の恩恵を受け、ユーザーがこれらのサービスに資格情報を入力する際に​​最も使いやすい信頼できる UI を提供します。(つまり、ユーザーには SSL ロック、アドレス バーの正しい URL などが表示されます)

于 2012-06-30T17:18:37.017 に答える