Ошибка Google Fit Api 403 от удаленного клиента

У меня есть веб-приложение, размещенное на IIS 7, которое выполняет вызовы Http с использованием Google Fit API, я могу успешно отправить POST и получить токен доступа, после чего я делаю GET для следующего uri:

"https://www.googleapis.com/fitness/v1/users/me/dataSources/raw:com.google.weight:com.google.android.apps.fitness:user_input/datasets/00-1427209862000000000"

Вот как я создаю запрос и смотрю на ответ:

        request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "GET";
        request.ContentLength = 0;
        request.Accept = "application/json";
        request.Headers.Add("Authorization", "Bearer " + dict["access_token"]);
        response = (HttpWebResponse)request.GetResponse();
        respStream = response.GetResponseStream();
        sResponse = new StreamReader(respStream).ReadToEnd();
        respStream.Close();
        Response.Write(sResponse);

Когда я запускаю это приложение в браузере на хост-сервере, я успешно получаю объект json (это не тот json, которого я ожидаю, но это другая проблема). Однако, когда я пытаюсь получить доступ к сайту на удаленном клиенте, я получаю сообщение об ошибке 403, указывающее, когда я пытаюсь получить ответ. Есть идеи?


person rickkr    schedule 26.03.2015    source источник


Ответы (2)


Вероятно, это зависит от того, как вы получили значение access_token.

Через какое время после получения токена доступа вы делаете этот запрос? Он действителен только в течение часа, поэтому вам может потребоваться получить новый с помощью токена обновления.

На этот вопрос есть еще несколько ресурсов по токенам доступа/обновления:

Срок действия Google OAuth2 Refresh_token истекает вместе с Access_token

person mduggan    schedule 27.04.2015
comment
Ах, извините, я забыл обновить это. На самом деле это была проблема с разрешениями, которую я упустил из виду. Спасибо за ваш ответ! - person rickkr; 27.04.2015

Обновление: это оказалось проблемой с разрешениями. Я пытался получить доступ к источнику данных, для которого у меня не было областей, тот факт, что он не возвращал 403 при доступе к хосту, сбил меня со следа. Тем не менее странно, что он не вернул 403 (он просто вернул пустой объект json) при запросе на хост-сервере... если вы видите это и понимаете, почему, не стесняйтесь комментировать. Мне любопытно.

person rickkr    schedule 27.04.2015