我一直在尝试学习OAuth(1.0)并试图通过尝试访问我在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中的代码被编写为始终将端口设置为443(用于https)或80用于http。当我逐步完成代码并将端口更改为-1时,我的请求工作正常,我能够获得我想要的信息。
不幸的是,我无法更改JAR文件中的代码,因此我必须在我的最终修改内容。在回答这个问题时,乔纳森'说:
另一种解决方法是在令牌范围中包含:443;它必须匹配
我尝试将请求令牌查询字符串更改为?scope=https%3A%2F%2Fwww.google.com **%3A443** %2Fm8%2Ffeeds%2F
,Google只是拒绝向我提供请求令牌 - 它给了我一个400错误Invalid scope: https://www.google.com:443/m8/feeds/
。将https更改为http并没有做任何事情。我怎么做乔纳森(他近一年没有上网)建议的呢?
答案 0 :(得分:0)
Google的身份验证范围是网址这一事实基本上是学术性的 - 它们实际上并没有提供任何有用的功能(see for yourself),因此添加端口只会让Google感到困惑。所以Jonathan的建议不正确。
他们甚至看起来像URL的唯一原因是它们可以被认为是普遍独特的(即使这只是可以说是真的)。
所以不要将:443
放在您的身份验证范围内。