0

Google バズ アクティビティを読み取るには、認証トークンが必要です。Web アプリケーションは Google のログイン ページにリダイレクトされ、そこでユーザーがログインすると、トークンが Web アプリケーションに返されます。

しかし、UI のないローカル Java アプリケーション (スクリプトなど) があります。このアプリケーションは、ユーザー名とパスワードを知っています。Googleログインページを表示せずに、このユーザー名とパスワードを使用して認証トークンを取得するにはどうすればよいですか?

4

2 に答える 2

2

短い答えは、あなたができないということです。Google のログイン ページなどをスクレイピングすることは絶対に避けてください。

最善の策は、Google OAuth フローからのコールバックを受信するために使用する軽量の組み込み Jetty サーバーのようなことを行うことです。これはまさに、OAuth 対応のカール ラッパーであるOACurlに対して行われたことです。そのコードはLoginCallbackServer.javaにあります。

于 2010-05-28T02:05:57.063 に答える
2

おそらく悪い考えですが、HttpClient のような HTTP ライブラリを使用して、ユーザーと同じ要求を行うことができます。ヒットする必要がある URL と使用する必要があるヘッダーを把握するには、ヘッダー監視ユーティリティを使用する必要がありますが、これを自動化することは可能です。Google がページ レイアウト、ids、classes、または全体的なページ構造を変更すると、解析コードが壊れます。

さらに、サーバーからの応答をキャプチャできる必要もあります。これには、特定の Web エンドポイントで応答を受信することが含まれます。これは、以下に概説するソリューション 2 で対処できます。

要約すれば。

解決策 1 - 認証

  1. 認証 URL に対するHttpClient GET。
  2. TagSoupは、ページの応答を解析し、ページから必要なデータ (存在する場合) を保存します。
  3. 必要に応じて、[1.2] からの応答を処理するXOM xml パーサー。
  4. 認証 URL に対する HttpClient リクエスト

解決策 2 - Google からの応答を受け取る

  1. Jettyサーバー を起動します。
  2. localhost:****/whatever認証時 の応答 URL を に設定します。
  3. Jetty で応答を受け入れます。コマンド ライン アプリケーションで応答を取得します。

免責事項:

これはすべてテストされておらず、非常に理論的なものです。これを行うためのより良い方法があるかもしれませんが、Web ブラウザーを開いてユーザーをログインさせるだけにならないようにするのは大変な作業です。

于 2010-05-25T19:41:56.577 に答える