5

Google Reader API は、今日の認証に別の何かを期待しているようです!

約 1 週間前に、これをダウンロードしました。すべてが機能しており、それを Java に移植しようとしています。私のコードでは、今日まで(例の助けを借りて)完全に機能しています。私はすべてをトレースしてスタックし、突然 Google リーダーが SID だけを Cookie として受け入れていないことがわかりました。そしてもちろん、あなたのサンプル アプリケーションもテスト実行しましたが、うまく動作しません。

次に、Google リーダーのデータを改ざんし、SID を除くすべての Cookie エントリを削除しましたが、機能していません (私のアプリケーションやサンプルと同じように、401 が表示されます)。もう一度テストしたところ、HSID と呼ばれる別の Cookie エントリが必要であることがわかりました。これは、SID (100 ワード以上の長さ) と比較して、約 10 ~ 20 ワードです。その追加の HSID をどこで入手できるか知っている人はいますか?

PS認証のためにHTTPSを実行でき、Googleは3つのトークン(SID、LSID、AUTH)を返しています。しかし、HSIDが何であるかを推測できる場所はどこにもありません。

4

6 に答える 6

10

やったよ。はい、sfa が提供するリンクは正しいです。しかし、形式がややこしすぎる。これが私のやり方です。

  1. ログイン認証情報を使用してhttps://www.google.com/accounts/ClientLoginに投稿します。
  2. 見返りに、正しいログインの場合は 3 つのトークンが渡されます。シドb。LSID c. 認証
  3. Auth をアプリケーションのどこかに保存します。SIDとLSIDは忘れてください(後で削除される可能性があると思います)
  4. すべてのリクエストで、ヘッダーに次を追加します: headername: Authorization value: GoogleLogin auth={Auth string} 例 (Java の場合)

    HttpGet メソッド = 新しい HttpGet(CommandUrl + QueryString); method.addHeader("Authorization", "GoogleLogin auth=" + Auth);

これは機能します。sfaさん、リンクありがとうございます。

于 2010-06-23T10:57:05.180 に答える
3

Authorization GoogleLogin auth=xxx をヘッダーに追加する必要があります。メッセージからの引用は次のとおりです。

この変更を行う方法の簡単な概要は次のとおりです: https://www.google.com/accounts/ClientLoginから既に認証を取得しているアプリ の場合、レスポンスの一部として Auth= 値を取得する必要があります。Reader に送信するすべてのリクエストに対して、その値を HTTP ヘッダーとして提供する必要があります。そうすれば、通常どおりに機能します。ヘッダーの形式は次のとおりです。 Authorization:GoogleLogin auth=[ClientLogin から取得した値]

動作確認!同じエラーが発生し、すでに問題を解決しました。こちら を参照してください

于 2010-06-23T09:37:00.530 に答える
1

または、http://github.com/wspringer/greader-java/で提供されているReaderTemplateクラスの使用を検討してください。基本的に、適切なヘッダーと(再)認証での織りの複雑さを隠します。

于 2010-08-24T11:23:19.130 に答える
1

詳細については、 http://code.google.com/p/google-reader-api/wiki/Authenticationを参照してください。ただし、簡単に言うと、ClientLogin と OAuth のみがサポートされています。引き続きブラウザー フロー (SID および HSID Cookie を使用) をシミュレートしないでください。これはサポートされておらず、いつでも壊れる可能性があります。

于 2010-06-23T18:52:20.027 に答える
0

初めてログインするときは、 https://www.google.com/accounts/ServiceLoginAuthを使用します 。あなたはhsidを取得します!

すべての Google リーダー API 操作で hsid が使用されていることがわかります。

私はfirebugを使用して、応答のsetCookieフィールドでhsidを見ることができます

于 2010-06-23T12:10:46.063 に答える
0

xandy が説明した 4 つの手順は機能しています。

これは、.NET での xandy の手順の私の実装です: http://sandrinodimattia.net/blog/post/Consuming-Google-(Reader)-with-NET-Part-1-Authentication.aspx

于 2010-07-06T12:47:01.450 に答える