谷歌联系人Api - 401访问时发生错误用户联系人
问题描述:
我使用的是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) + "\"";
能
人告诉我如何解决这个问题?
答
OAuth1是deprecated(谷歌)。请不要花费任何精力用OAuth1编写新代码。使用OAuth2,没有签名和加密。 您是否有理由需要使用OAuth1?我们想知道。我在Google上开发OAuth。
答
其实:
如果你的应用有某些特殊授权要求,如在同一时间登录为请求数据访问(混合) 或权威的全域委托(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密钥?
我打这个网址https://www.google.com/m8/feeds/contacts/default/full,并尝试使用电子邮件替换默认关键字相同的网址......但我得到沮丧的401错误..... –