2013-07-19 79 views
0

我使用的是oauth 1.0,直到现在我可以成功从Google获取访问令牌。 但是,当我想要从https://www.google.com/m8/feeds/contacts/default/full中检索用户联系人时,它将返回401错误并且无需进一步解释。谷歌联系人Api - 401访问时发生错误用户联系人

我发现Google操场的信息可能并不准确,例如步骤3和步骤5中的签名基本字符串包含oauth_version,但它是错误的。 (如果您有oauth_version,它将返回signature_invalid,不包括oauth_version)

这是我的要求:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sbGetContacts.ToString()); 
     req.Method = "GET"; 
     req.Headers.Add(authHeader); 
     HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 

这是我的头:

 string authHeader = "Authorization: OAuth " + 
     "oauth_version=" + "\"" + "1.0" + "\"" + "\"," + 
     "oauth_nonce=" + "\"" + nonce + "\"," + 
     "oauth_timestamp=" + "\"" + timeStamp + "\"," + 
     "oauth_consumer_key=" + "\"" + GoogleconsumerKey + "\"," + 
     "oauth_token=" + "\"" + OauthToken+ "\"," + 
     "oauth_signature_method=" + "\"" + "HMAC-SHA1" + "\"," + 
     "oauth_signature=" + "\"" + UpperCaseUrlEncode(sig) + "\""; 

人告诉我如何解决这个问题?

回答

0

OAuth1是deprecated(谷歌)。请不要花费任何精力用OAuth1编写新代码。使用OAuth2,没有签名和加密。 您是否有理由需要使用OAuth1?我们想知道。我在Google上开发OAuth。

0

其实:

如果你的应用有某些特殊授权要求,如在同一时间登录为请求数据访问(混合) 或权威的全域委托(2LO),然后 您目前不能使用OAuth 2.0令牌。在这种情况下,您必须改用 OAuth 1.0令牌和API密钥。您可以在Google API控制台中找到应用程序的API 密钥,位于 API访问面板的简单API访问部分。

根据https://developers.google.com/google-apps/contacts/v3/?hl=fr

所以你需要通过一个API密钥。您可以这样做:将key ='YOUR_API_KEY'添加到URL ,但如果您使用的是gdata客户端库,如何传递API密钥?

+0

我打这个网址https://www.google.com/m8/feeds/contacts/default/full,并尝试使用电子邮件替换默认关键字相同的网址......但我得到沮丧的401错误..... –