2011-12-17 2 views
1

Google에서는 작업 API를 사용하는 법을 배우고 있습니다.401 권한이없는 Google 작업 사용

나는 tokken에 액세스하는 데 성공했습니다.

지금 나는이 나머지 URL을 사용하여 작업 목록 얻기 위해 노력하고 있어요 : HTTP 인증 헤더가 액세스 토큰을 전송하기 위해 내가 필요 https://www.googleapis.com/tasks/v1/users/@me/lists 구글 작업 문서 기록에서

을하지만 난 방법 link

을 모르는 웹에서 결과를 검색했지만 해결책을 찾지 못했습니다. 나는이 사이트를 솔루션으로 검색했지만 얻지 못했습니다.

request.GetResponse()를 시도 할 때 권한이없는 오류가 발생합니다. 이이 나는이 API를 사용하여 제안 인증을하고 (Task Api Sample 포함) samples 프로젝트 게시자 시작하기위한 헬퍼를 포함, 구글은 구글 API를 액세스하기위한 .Net library를 게시가 내 코드

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

입니다.

API 호출을 직접 수행하려면 communications library을 사용하거나 source code을보고 Google이 통신을 완료 한 방법을 참조하십시오.

OAuthUtil.GenerateHeader에 지정된 값으로 HTTP 헤더 System.Net.HttpRequestHeader.Authorization을 추가 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를 사용하고 싶습니다. 지저귐 API에도 좋을 것이기 때문에, ans는 안식의 나머지 API입니다. 내가 필요한 것은 Google에 tokken 액세스를 보낸 구문을 아는 것입니다. – Silagy

+0

대단히 감사합니다. – Silagy

관련 문제