0

私は OAuth (1.0) を学ぼうとしており、Google で自分の連絡先にアクセスしようとしてコードをテストしています。友人/消費者の関係を設定する必要がなく (Google は消費者トークンに匿名/匿名を許可するだけです)、Google には OAuth Playground があるため、これは簡単です。

だから私は次のようにコードを設定して

すべてが順調に進んでいるように見えました。リクエスト トークンは問題なく取得され、正常に承認され、アクセス トークンを取得できました。次に、 https://www.google.com/m8/feeds/contacts/default/full/にリクエストを送信しようとしました

唯一の問題は、「401: AuthSub トークンのスコープが間違っています」というエラーが発生し続けたことです。

OAuth Playground ( http://googlecodesamples.com/oauth_playground/index.php )で同じ消費者情報を使用して同じリクエストを行った場合、すべてがうまくいくため、これに混乱しました。

最終的に、次の質問が見つかりました: HTTP/1.1 401 トークンが無効です - AuthSub トークンのスコープが間違っています

一番上の答えは私の解決策に私を導きました-私が使用していたJARの1つに、ポートを常にhttpsの場合は443、httpの場合は80に設定するように記述されたコードがありました。コードをステップ実行してポートを -1 に変更すると、リクエストは正常に機能し、必要な情報を取得できました。

残念ながら、JAR ファイルのコードを変更することはできないので、自分で修正する必要があります。その質問に対する答えの中で、「ジョナサン」は次のように述べています。

別の回避策は、トークン スコープに :443 を含めることです。それはちょうど一致する必要があります

リクエスト トークンのクエリ文字列を に変更しようとしましたが?scope=https%3A%2F%2Fwww.google.com **%3A443** %2Fm8%2Ffeeds%2F、Google はリクエスト トークンの提供を拒否しましたInvalid scope: https://www.google.com:443/m8/feeds/。https を http に変更しても何も起こりませんでした。Jonathan (彼はほぼ 1 年間オンラインになっていません) が提案したことをどのように実行しますか?

4

1 に答える 1

0

Google の認証スコープが URL であるという事実は、基本的に学術的なものです。実際には有用なものを提供していないため (自分の目で確かめてください)、ポートを追加すると Google が混乱するだけです。したがって、ジョナサンの提案は間違っていました。

それらが URL のように見える唯一の理由は、それらが普遍的に一意であると期待されるためです (これはほぼ間違いなく真実です)。

:443したがって、を認証スコープに入れないでください。

于 2012-09-13T21:57:02.150 に答える