1

私の管理下にある Web サーバーに対して OAuth2 を使用して認証を行う Android アプリを作成しています。

クライアント側で Apache Amber を使用し、サーバー側で Django と一緒に oauth2app を使用しています。

クライアントから、承認リクエストを生成し、クライアント アクセスを許可するかどうかを尋ねるページに移動するブラウザー アクティビティを開始し、肯定的に答えた後、「コード」パラメーターを含むページにリダイレクトします。

しかし、その後の access_token リクエストを行うために、「コード」をクライアントに戻すにはどうすればよいでしょうか?

ブラウザを完全にバイパスする必要がありますか? それはどのように機能しますか?

4

2 に答える 2

0

OAuth 2 に特化した別のブログ投稿を見つけました。

http://blog.doityourselfandroid.com/2011/08/06/oauth-2-0-flow-android/

秘訣は、コンテンツが (レイアウトではなく) WebView によって提供される新しいアクティビティを起動することです。「コード」パラメーターを含むページへのリダイレクトで呼び出される WebView にハンドラーをアタッチできます。

ブログ投稿の詳細の一部は Google API に関するものですが、これまでのところ、私の実験では、私の状況で動作することが示唆されています。

于 2012-09-01T18:03:51.030 に答える
0

ここにはいくつかの選択肢があると思います。

このredirect_uriパラメーターは、コードの送信先をサーバーに示します。ouath2appドキュメントから:

リクエストが承認されている場合、Authorizer:grant_response() はオブジェクトを JSON レスポンスにシリアライズし、クエリ文字列パラメータ (response_type CODE) として渡された認可コードに関する情報、または URI フラグメントとして渡されたアクセス トークンに関する情報を含むリダイレクト レスポンスをクライアントの redirect_uri に返します。 .

それで武装した:

  1. その値がサーバー上の場所である場合、モバイル ブラウザーはリダイレクトの一部として値を取得します。具体的には、リダイレクトで URI フラグメントを読み取ろうとしています。これは、あなたのようなアプリケーションの意図された使用法だと思います。このブログ投稿には、「アクセストークンの取得」セクションの下に、関連する可能性のあるコードが含まれているようです。

  2. または、指摘したように、トークンをサーバー上の別のハンドラーに送信してから、クライアントに戻すこともできます。サービスで定義されたコールバック URL である必要があります。

于 2012-09-01T00:40:00.663 に答える