Я создал пользовательскую базу данных, которую я хотел бы заполнить некоторыми из моих данных UP3. Я успешно прошел аутентификацию и получил ответ JSON с моим токеном на предъявителя. Отсюда я как бы потерялся.
Из документации мне нужно отправить запрос GET
https://jawbone.com/nudge/api/v.1.1/users/@me
Каждый раз, когда я делаю, я получаю:
В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin»
Я добавил:
header('Access-Control-Allow-Origin: http://example.com');
(замена example.com моим доменом)
на страницу, которая отправляет запрос GET. Какие-нибудь мысли?
Все конечные точки Jawbone имеют заголовок CORS, установленный в
Access-Control-Allow-Origin: *
Однако это по-прежнему не разрешает межсайтовые запросы от localhost (спасибо @TirthrajBarot за объяснение в комментариях), поэтому вам следует отключить эту проверку в Chrome с помощью чего-то вроде Расширение Access-Control-Allow-Origin.
После аутентификации пользователя и разрешений я перенаправляю на другую страницу для проверки кода аутентификации и получения токена доступа. Оттуда я перехожу на другую страницу, чтобы отправить запрос GET для данных. Вот код, который работает:
$url = "https://jawbone.com/nudge/api/v.1.1/users/@me/sleeps?" . $sleepDate;
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept: application/json\r\n" .
"Authorization: Bearer " . $accessToken . "\r\n" .
"Host: {my website}")
);
$context = stream_context_create($options);
$sleepData = @file_get_contents($url, false, $context);
Данные возвращаются, декодируются и обрабатываются. Результат помещается в текстовое поле в форме, которую пользователь может редактировать при желании. Также есть кнопка для ввода данных в базу данных (вместе с кучей скрытых полей формы, которые вводят другие важные данные)