401 не авторизован с помощью задачи Google - PullRequest
1 голос
/ 17 декабря 2011

Я учусь использовать Google Task Api Rest.

Мне удалось получить токен доступа.

Теперь я пытаюсь получить список задач, используя этот URL для отдыха: https://www.googleapis.com/tasks/v1/users/@me/lists

В документации по задаче Google напишите, что мне нужно отправить токены доступа по HTTP-заголовку авторизации, но я не знаю, как ссылка

У меня есть поиск в Интернете, но яне нашел решения.Я также искал решение для этого сайта, но не получил его.

Я получаю 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);

1 Ответ

0 голосов
/ 19 декабря 2011

Google публикует библиотеку .Net для доступа к Google Api, включая помощников для выполнения аутентификации. Я бы предложил использовать этот Api и начиная с samples издателей проекта. (включая Task Api Sample ).

Если вы хотите продолжить ручную настройку вызова Api, вы можете просто использовать коммуникационную библиотеку или посмотреть исходный код и посмотреть, как Google установил связь.

EDIT

В указанном выше источнике вы можете найти OAuth Authenticator , который добавляет заголовок http 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 для этой конкретной функции, а не копировать ее напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...