2011-12-17 92 views
1

我正在学习使用谷歌任务API休息。401未经授权使用谷歌任务

我已成功访问tokken。

现在我试图让任务列表使用此休息网址:https://www.googleapis.com/tasks/v1/users/@me/lists

在谷歌文档的任务写,我需要通过HTTP授权头发送的访问令牌,但我不知道如何 link

我在网上搜索结果,但没有找到解决方案。 我也搜索了这个网站的解决方案,但没有得到一个。

我收到401未经授权的错误,当试图request.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

有一个谷歌访问谷歌阿比出版.Net library,这包括做认证,我建议使用此API,并从samples项目发布商(包括Task Api Sample)开始的帮手。

如果您想随身携带Api呼叫,您可以使用communications library或查看source code并查看Google如何完成通信。

EDIT

从上面您链接可以找到这增加了HTTP标头System.Net.HttpRequestHeader.AuthorizationOAuthUtil.GenerateHeader指定的值OAuth Authenticator源。下面复制了相关部分。

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用于此特定功能,而不是直接应对。

+0

我对Google API的.NET库很熟悉,但我想使用httpRequest。因为它对twitter api也有好处,ans anthers api。 所有我需要的是知道将访问tokken发送到谷歌的语法。 – Silagy 2011-12-19 12:15:17

+0

非常感谢 – Silagy 2011-12-19 18:07:24

相关问题