用于DotNet的Google Contacts API上的Oauth2 - 令牌无效 - AuthSub令牌的范围错误

时间:2012-09-21 13:28:30

标签: google-api oauth-2.0

我创建了一个授权vb.net应用程序使用Oauth2访问Google Fusion Tables的类。如果需要,它会在表单中打开Web浏览器,加密并存储刷新令牌,并且运行良好。我可以访问融合表数据。

但是,我还想访问联系人。我已请求从用户访问“联系人”。

我可以检索适用于融合表的AccessToken,并尝试了不同的技术来处理联系人,但没有运气。我一直收到401未经授权的错误。但是,如果我使用clientlogin,可以让联系人正常工作。

非常感谢任何帮助。

我的最新尝试:

Dim rs As New RequestSettings("App Name", p.AccessToken) 'String retrieved from class
Dim cr As New ContactsRequest(rs)
Dim q As New FeedQuery
q.Uri = New Uri("http://www.google.com/m8/feeds/contacts/<EMAIL>/full/<IDCODE>")
Dim c As New Contact
c = cr.Retrieve(Of Contact)(q)

2 个答案:

答案 0 :(得分:0)

您必须请求访问Contacts API OAuth范围,即https://www.google.com/m8/feeds/

.NET客户端库包含使用Contacts API的OAuth 2.0示例:

https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs

答案 1 :(得分:0)

感谢Claudio Cherubino提出的建议。我实际上已经在使用那个范围。值得庆幸的是,我现在终于找到了答案。

我真的错过了一封信:

q.Uri = New Uri("http://www.google.com/m8/feeds/contacts/<EMAIL>/full/<IDCODE>")

......错了,因为我要求的范围确实是:

https://www.google.com/m8/feeds/

所以Uri需要与httpS匹配。我添加了's'并且它有效。正确的代码如下:

q.Uri = New Uri("https://www.google.com/m8/feeds/contacts/<EMAIL>/full/<IDCODE>")

非常感谢这篇帖子的回答: http://www.geoffmcqueen.com/2010/03/14/token-invalid-authsub-token-has-wrong-scope-oauth-google-problem