Google+ API заставляет людей "меня" - PullRequest
1 голос
/ 24 сентября 2011

После попытки аутентификации в Google+ API мне наконец удалось получить информацию с помощью https://www.googleapis.com/plus/v1/people/{MyUserId}?key={ApiKey}

Однако, несмотря на то, что я получил токен доступа с областью действия https://www.googleapis.com/auth/plus.me Я не могу запросить «меня»: https://www.googleapis.com/plus/v1/people/me?key={ApiKey}

Я получаю 401 несанкционированный запрос ... Уже поздно, и я не понимаю, чего мне не хватает.

Вот мой код:

       string apiUrl = "https://www.googleapis.com/plus/v1/people/me?key={my api key";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
        request.Method = HttpMethod.GET.ToString();

        try
        {
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
               => 401 error

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Это не дает прямого ответа на ваш вопрос, но вы пробовали клиентскую библиотеку API Google для .NET?

См .: http://code.google.com/p/google-api-dotnet-client/

http://code.google.com/p/google-api-dotnet-client/wiki/OAuth2

http://code.google.com/p/google-api-dotnet-client/wiki/APIs#Google+_API

Ошибка 401, скорее всего, означает, что срок действия вашего токена доступа истек и его необходимо обновить с помощью маркера обновления.

0 голосов
/ 21 мая 2014

Я опоздал на 3 года, но нашел этот пост, когда искал решение почти идентичной проблемы. Однако я стараюсь избегать использования API Google, поэтому решил опубликовать собственное решение на тот случай, если кто-нибудь захочет найти способ сделать это без Google API. Я использую RestSharp для обработки HTTP-запросов, но в этом нет необходимости.

//craft the request
string requestUrl = "https://www.googleapis.com/plus/v1/people/me?access_token=" + AccessToken;
RestClient rc = new RestClient();
RestRequest request = new RestRequest(requestUrl, Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("x-li-format", "json");
request.RequestFormat = DataFormat.Json;

//send the request, and check the response.
RestResponse restResponse = (RestResponse)rc.Execute(request);
if (!restResponse.ResponseStatus.Equals(ResponseStatus.Completed)) { return null; }

Основное отличие от первоначальной реализации в вопросе не в том, что я использую RestSharp - это незначительно. Основное отличие состоит в том, что я передал access_token в строке запроса вместо ключа.

...