post('https://accounts.google.com/o/oauth2/token', [
'code' => $code,
'client_id' => CLIENT_ID,
'client_secret' => CLIENT_SECRET,
'redirect_uri' => implode('', [
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http',
'://',
$_SERVER['SERVER_NAME'],
$_SERVER['SCRIPT_NAME'],
]),
'grant_type' => 'authorization_code',
]);
if ($curl->error) {
echo $curl->response->error . ': ' . $curl->response->error_description;
exit;
}
$_SESSION['access_token'] = $curl->response->access_token;
header('Location: ?');
exit;
} elseif (!empty($_SESSION['access_token']) && !isset($_GET['retry'])) {
// Use the access token to retrieve the profile.
$curl = new Curl();
$curl->setHeader('Content-Type', 'application/json');
$curl->setHeader('Authorization', 'OAuth ' . $_SESSION['access_token']);
$curl->get('https://www.googleapis.com/plus/v1/people/me');
if ($curl->error) {
echo 'Error ' . $curl->response->error->code . ': ' . $curl->response->error->message . '.
';
echo 'Retry?';
exit;
}
echo 'Hi ' . $curl->response->displayName . '.';
} else {
$curl = new Curl();
$curl->get('https://accounts.google.com/o/oauth2/auth', [
'scope' => 'https://www.googleapis.com/auth/plus.me',
'redirect_uri' => implode('', [
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http',
'://',
$_SERVER['SERVER_NAME'],
$_SERVER['SCRIPT_NAME'],
]),
'response_type' => 'code',
'client_id' => CLIENT_ID,
'approval_prompt' => 'force',
]);
$url = $curl->responseHeaders['Location'];
echo 'Continue';
}