Как мне использовать php curl вместо header(‘Location:) для возврата токена?

#curl #oauth-2.0 #token #exact-online

#curl #oauth-2.0 #токен #точный-онлайн

Вопрос:

У меня есть ссылка API с моего сайта на Exact Online, и это работает. Первым шагом в авторизации является возврат токена с точного онлайн-сайта. Код использует header() для этого, как показано в моем коде ниже. Однако перенаправление header() на моем сайте (для возврата токена) не работает, когда я перенаправляю на свой сайт с другого сайта (т. Е. Когда я пытаюсь получить другой веб-сайт для доступа к запросу API через мой веб-сайт, как если бы запрос был помечен белым цветом). Я подозреваю, что если я заменю header() на своем веб-сайте запросом CURL, это может сработать, но пока я не смог этого сделать — может кто-нибудь, пожалуйста, помочь мне с этим?

Это код, который работает:

 if (!isset($_GET['code'])) {
// If there is no token, this returns the token with the 'code' parameter
$url = "https://start.exactonline.co.uk/api/oauth2/auth";
$params = array(
    "response_type" => "code",
    "client_id" => $clientId,
    "redirect_uri" => $redirectUri
    );
$request_to = $url . '?' . http_build_query($params);
header("Location: " . $request_to);
die('Redirect');
}
  

Я попробовал это, и это не увенчалось успехом:

 $curlOpt = array();
$curlOpt[CURLOPT_URL] = 'https://start.exactonline.co.uk/api/oauth2/auth?client_id=XXXXXXXXXamp;redirect_uri=ZZZZZZZZ';
$curlOpt[CURLOPT_RETURNTRANSFER] = FALSE;
$curlOpt[CURLOPT_SSL_VERIFYPEER] = FALSE;
$curlOpt[CURLOPT_FOLLOWLOCATION] = TRUE;
$curlOpt[CURLOPT_POSTFIELDS] = array(
    'response_type' => 'code');
$curlHandle = curl_init();
curl_setopt_array($curlHandle, $curlOpt);
curl_exec($curlHandle);
  

Я подозреваю, что мой запрос CURL неверен, но я не знаю, как это исправить, и буду признателен за любую помощь.

Ответ №1:

Вызов auth-endpoint всегда является обычным GET (как в вашем первом примере). Это покажет страницу входа. Не имеет значения, с какого сайта вы заходите.

Комментарии:

1. Спасибо — я посмотрю, разрешает ли Exact тип предоставления учетных данных клиента, чтобы я мог опубликовать учетные данные и получить токен аутентификации без необходимости входа пользователя.