<?php

require_once '../resources/config.php';
require_once LIBRARIES_PATH . "/Prismic.php";
$maybeCode = isset($_GET['code']) ? $_GET['code'] : null;
if (!isset($maybeCode)) {
    header('HTTP/1.1 400 Bad Request', true, 400);
    exit('Bad Request');
}
$maybeRedirectUri = isset($_GET['redirect_uri']) ? $_GET['redirect_uri'] : null;
$api = Prismic::apiHome();
$data = array("grant_type" => array('authorization_code'), "code" => $maybeCode, "redirect_uri" => Prismic::callback(), "client_id" => Prismic::config("prismic.clientId"), "client_secret" => Prismic::config("prismic.clientSecret"));
try {
    $response = Prismic\Api::getClient()->post($api->oauthTokenEndpoint(), null, $data)->send();
    $url = isset($maybeRedirectUri) ? $maybeRedirectUri : Routes::index();
    $json = $response->json();
    setcookie('ACCESS_TOKEN', $json['access_token']);
    header('Location: ' . $url);
} catch (Guzzle\Http\Exception\BadResponseException $e) {
    header('HTTP/1.0 401 Unauthorized');
    exit($response->getStatusCode());
}
<?php

require_once '../resources/config.php';
require_once LIBRARIES_PATH . "/Prismic.php";
$api = Prismic::apiHome();
$maybeClientId = Prismic::config('prismic.clientId');
$maybeClientSecret = Prismic::config('prismic.clientSecret');
if (!isset($maybeClientId)) {
    throw new Exception("Please provide clientId");
}
if (!isset($maybeClientSecret)) {
    throw new Exception("Please provide clientSecret");
}
$params = array("client_id" => Prismic::config('prismic.clientId'), "redirect_uri" => Prismic::callback(), "scope" => "master+releases");
$queryString = http_build_query($params);
header('Location: ' . $api->oauthInitiateEndpoint() . '?' . $queryString, false, 301);
exit(0);