我正在使用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) + "\"";
有谁能告诉我如何解决问题?
答案 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密钥?