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 Token invalid - AuthSub token has wrong scope

最佳答案让我找到了我的解决方案——我正在使用的一个 JAR 中有一段代码,它总是将端口设置为 https 的 443 或 http 的 80。当我单步执行我的代码并将端口更改为 -1 时,我的请求运行良好,并且我能够获得我想要的信息。

不幸的是,我无法更改 JAR 文件中的代码,所以我将不得不在最后解决问题。在回答这个问题时,“乔纳森”说:

另一种解决方法是将 :443 包含在令牌范围中;它只需要匹配

我尝试将我的请求令牌查询字符串更改为?scope=https%3A%2F%2Fwww.google.com **%3A443** %2Fm8%2Ffeeds%2FGoogle 只是拒绝给我一个请求令牌 - 它给了我一个 400 错误说Invalid scope: https://www.google.com:443/m8/feeds/。将 https 更改为 http 没有任何作用。我将如何按照乔纳森(几乎一年没上网)的建议去做?

4

1 回答 1

0

Google 的 auth 范围是 URL 的事实基本上是学术性的——它们实际上并没有提供任何有用的东西(自己看),所以添加一个端口只会让 Google 感到困惑。所以乔纳森的建议是不正确的。

它们甚至看起来像 URL 的唯一原因是它们可以被认为是普遍唯一的(即使这只能说是正确的)。

所以不要把auth 放在:443你的 auth 范围内。

于 2012-09-13T21:57:02.150 回答