我正在学习使用google task api rest。
我成功获得了访问权。
现在我正在尝试使用此休息网址获取任务列表:https://www.googleapis.com/tasks/v1/users/@me/lists
在google任务文档中写道,我需要通过HTTP Authorization标头发送Access令牌,但我不知道如何 link
我在网上搜索结果但没有找到解决方案。 我也搜索了这个网站寻求解决方案,但没有得到一个。
我在尝试请求时遇到401未经授权的错误.GetResponse(); 这是我的代码
private AccessToken _accessToken = null;
private string Apikey = "my api key";
protected void Page_Load(object sender, EventArgs e)
{
_accessToken = (AccessToken)Session["AccessTokken"];
string _customerkey = "my customer key";
string _customerSecret = "my customer secret key";
Response.Write(_accessToken.Token);
string nostring = "";
string nnString = "";
OAuthBase oauth = new OAuthBase();
Uri t = new Uri("https://www.googleapis.com/tasks/v1/users/@me/lists");
string u = oauth.GenerateSignature(t, _customerkey, _customerSecret, _accessToken.Token,
_accessToken.TokenSecret, "GET", oauth.GenerateTimeStamp(),
oauth.GenerateNonce(), out nostring, out nnString);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(nostring);
request.Method = "GET";
//request.Headers.Add("Authorization: Bearer " + _accessToken.Token);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseString = reader.ReadToEnd();
reader.Close();
Response.Write(responseString);
答案 0 :(得分:0)
有一个Google发布.Net library用于访问Google Api,其中包括用于执行身份验证的帮助程序我建议使用此Api并从samples项目发布者(包括Task Api Sample开始})。
如果您想随身携带Api通话,您可以使用communications library,或查看source code,了解Google如何进行通信。
在上面链接的来源中,您可以找到OAuth Authenticator,其中添加了http {header} System.Net.HttpRequestHeader.Authorization OAuthUtil.GenerateHeader中指定的值。相关部分复制如下。
StringBuilder sb = new StringBuilder();
sb.Append("Authorization: OAuth oauth_version=\"1.0\",");
sb.AppendFormat("oauth_nonce=\"{0}\",", EncodingPerRFC3986(nonce));
sb.AppendFormat("oauth_timestamp=\"{0}\",", EncodingPerRFC3986(timeStamp));
sb.AppendFormat("oauth_consumer_key=\"{0}\",", EncodingPerRFC3986(consumerKey));
if (!String.IsNullOrEmpty(token))
{
sb.AppendFormat("oauth_token=\"{0}\",", EncodingPerRFC3986(
}
sb.Append("oauth_signature_method=\"HMAC-SHA1\",");
sb.AppendFormat("oauth_signature=\"{0}\"", EncodingPerRFC3986(signature));
return sb.ToString();
您可以只使用Api的这一底层,而不用担心生成的服务。请记住,http://www.apache.org/licenses/LICENSE-2.0涵盖了此代码,因此在合法的版本中使用DLL可能更容易,而不是直接处理它。