Я работаю с apythifit api с PHP, я пытаюсь просто эхо-данные json в данный момент, но данные JSON, которые я получаю, являются неправильной ошибкой запроса. Пока это работает. Я впервые перешел http://www.plas.nyc/TEST/fitbit.php, который представляет собой код, ниже которого после нажатия кнопки LOGIN перенаправляет меня на сайт фиттита, который затем возвращается обратно на мой сайт с кодом, добавленным в URL: http : //www.plas.nyc/TEST/fitbit.php? code = cc8462bcde166d20517fc099b8ea9c994738ac59, который является большим, но BAD PART – это JSON, полученный в моем var_dump, является ошибкой, которая снимает это в DOM вместо правильных данных, которые я запросил :
string(210) "{"errors":[{"errorType":"invalid_request","message":"Authorization header required. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process."}],"success":false}"
На данный момент я не уверен, что может быть неправильным? Ниже приведен код, написанный для этого.
<?php /*--------------------- Fitbit API Keys ---------------------*/ // CONSTANTS define("user_id",'X2222X'); // renamed to X2222X for this post define("client_id",'X1111X'); //renamed to X1111X for this post. define("response_type",'code'); define("scope", 'activity nutrition profile settings sleep social weight'); define("redirect_uri", 'http://www.plas.nyc/TEST/fitbit.php'); if($_GET['code']){ echo '<h1>success</h1>'; //loggedin $code = $_GET['code']; $url = "https://api.fitbit.com/oauth2/token"; $access_token_setttings = array( 'code' => $code, 'grant_type' => "authorization_code", 'client_id' => client_id, 'redirect_uri' => redirect_uri ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $access_token_setttings); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// look into it more $result = curl_exec($curl); curl_close(); $results = json_decode($result, true); var_dump($result); } else { ?> <!DOCTYPE html> <html> <head> <title>FITBIT API -|- PLAS.NYC</title> </head> <body> <a href="https://www.fitbit.com/oauth2/authorize?response_type=<?php echo response_type; ?>&client_id=<?php echo client_id; ?>&scope=<?php echo scope; ?>">LOGIN</a> </body> </html> <?php } ?>
Мне не хватало заголовка Authorization, который также требовал строку base64
$auth_header = array("Authorization: Basic " . base64_encode(client_id.":".client_secret));
Добавление этого в мой заголовок позволило мне решить эту проблему.