2013-05-06 2 views
3

У меня в настоящее время возникают проблемы с получением Token LinkedIn.LinkedIn Get Token возвращает HTTP 1.1 400 - ошибка с неправильным запросом

Я сейчас в сети developers documentation in order to get through authentication.

Я также использую this sample в качестве базового кода

Однако, после того, как я получаю в процессе авторизации, в котором я получаю аутентификацию-коду, процесс получения маркеров для пользователя не удается, с Bad Request Error (400)

Вот модифицированный код страницы образца (Примечание: комментируемой части мы предыдущие attemps я сделал, прежде чем перейти к Curl)

public function getAccessToken() { 
     $params = array('grant_type' => 'authorization_code', 
      'client_id' => API_KEY, 
      'client_secret' => API_SECRET, 
      'code' => $_GET['code'], 
      'redirect_uri' => REDIRECT_URI.'/linkedin/auth', 
     ); 


     // Access Token request 
     $url = urldecode('https://www.linkedin.com/uas/oauth2/accessToken?'.http_build_query($params)); 
     //header("Content-length: ".strlen($url)); 
     // Tell streams to make a POST request 


     echo $url; 

     /*$context = stream_context_create(
      array('http' => 
      array('method' => 'POST', 
      ) 
      ) 
     );*/ 

     /*$context = stream_context_create(
         array('http' => 
          array('method' => 'POST', 
            'header' => 'Content-type: application/x-www-form-urlencoded', 
            'content' => http_build_query($params)) 
         ) 
        ); 

     // Retrieve access token information 
     $response = file_get_contents($url, FALSE, $context);*/ 


     $ch = curl_init(); 

     curl_setopt($ch,CURLOPT_URL, $url); 
     curl_setopt($ch,CURLOPT_POST,1); 
     $response = curl_exec($ch); 

     curl_close($ch); 

     $token = json_decode($response); 

     echo json_decode($response); 

     // Store access token and expiration time 
     $_SESSION['access_token'] = $token->access_token; // guard this! 
     $_SESSION['expires_in'] = $token->expires_in; // relative time (in seconds) 
     $_SESSION['expires_at'] = time() + $_SESSION['expires_in']; // absolute time 

     return true; 
} 

забыл упомянуть, что, то echo $url; часть, выводит URL, что, когда вставлена ​​вручную в браузере, генерирует действительный маркера пользователя

+0

Вы пытаетесь 'urlencode' кода и redirect_uri параметров? –

+0

@Yan Да, я сделал. Результат был тот же. Плохой запрос при получении ответа, но, вручную вставляя URL-адрес в браузере, работает так, как ожидалось, поскольку это ответ JSON с меткой истечения срока действия и токеном доступа. –

+2

Вы пытались отправить его как 'GET' вместо' POST'? –

ответ

3

Для того запроса на работу, он должен быть отправлен в GET вместо POST.

Удалить эту строку:

curl_setopt($ch,CURLOPT_POST,1); 
Смежные вопросы