访问用户联系时,Google通讯录Api - 401错误

时间:2013-07-19 07:09:05

标签: google-oauth google-contacts

我正在使用oauth 1.0,直到现在我可以成功从Google获取访问令牌。 但是,当我想从 https://www.google.com/m8/feeds/contacts/default/full 检索用户联系人时,会返回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) + "\"";

有谁能告诉我如何解决问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

实际上:

  

如果您的申请有某些不寻常的授权要求,   例如在请求数据访问的同时登录(混合)   或域范围的授权(2LO),那么你不能   目前使用OAuth 2.0令牌。在这种情况下,您必须改为使用   OAuth 1.0令牌和API密钥。您可以找到您的应用程序的API   键入Google API控制台,在“简单API访问”部分中   API访问窗格。

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

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