私は OAuth (1.0) を学ぼうとしており、Google で自分の連絡先にアクセスしようとしてコードをテストしています。友人/消費者の関係を設定する必要がなく (Google は消費者トークンに匿名/匿名を許可するだけです)、Google には OAuth Playground があるため、これは簡単です。
だから私は次のようにコードを設定して
- リクエストトークン: https://www.google.com/accounts/OAuthGetRequestToken?scope=https%3A%2F%2Fwww.google.com%2Fm8%2Ffeeds%2F
- 承認済みリクエスト トークン: https://www.google.com/accounts/OAuthAuthorizeToken
- アクセストークン: https://www.google.com/accounts/OAuthGetAccessToken
すべてが順調に進んでいるように見えました。リクエスト トークンは問題なく取得され、正常に承認され、アクセス トークンを取得できました。次に、 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 年間オンラインになっていません) が提案したことをどのように実行しますか?