2011-12-17 88 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

相關問題