82 lines
2.5 KiB
PHP
Executable file
82 lines
2.5 KiB
PHP
Executable file
<?php
|
|
require_once __DIR__ . "/session_bootstrap.php";
|
|
|
|
$client_id = "YOUR-EVE-CLIENT-ID";
|
|
// Replace with your ESI client secret from EVE Developer Portal
|
|
$client_secret = "YOUR-EVE-CLIENT-SECRET";
|
|
$redirect_uri = "YOUR-CALLBACK-URL"; // Example: https://your-domain.com/callback.php
|
|
|
|
// Validate the OAuth state and code
|
|
if (
|
|
!isset($_GET["code"]) ||
|
|
!isset($_GET["state"]) ||
|
|
$_GET["state"] !== $_SESSION["oauth2state"]
|
|
) {
|
|
exit("Invalid state or code");
|
|
}
|
|
|
|
$code = $_GET["code"];
|
|
$token_url = "https://login.eveonline.com/v2/oauth/token";
|
|
|
|
// Get the access and refresh tokens
|
|
$ch = curl_init($token_url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
curl_setopt(
|
|
$ch,
|
|
CURLOPT_POSTFIELDS,
|
|
http_build_query([
|
|
"grant_type" => "authorization_code",
|
|
"code" => $code,
|
|
"redirect_uri" => $redirect_uri,
|
|
])
|
|
);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
|
"Authorization: Basic " . base64_encode($client_id . ":" . $client_secret),
|
|
"Content-Type: application/x-www-form-urlencoded",
|
|
]);
|
|
|
|
$response = curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
curl_close($ch);
|
|
|
|
$token_data = json_decode($response, true);
|
|
|
|
// Fail gracefully if token fetch fails
|
|
if (!is_array($token_data) || !isset($token_data["access_token"])) {
|
|
error_log("Token exchange failed: $response");
|
|
exit("Failed to retrieve access token");
|
|
}
|
|
|
|
// Use access token to get character info
|
|
$ch = curl_init("https://login.eveonline.com/oauth/verify");
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
|
"Authorization: Bearer " . $token_data["access_token"],
|
|
]);
|
|
$user_data = json_decode(curl_exec($ch), true);
|
|
curl_close($ch);
|
|
|
|
// Validate user info
|
|
if (!is_array($user_data) || !isset($user_data["CharacterID"])) {
|
|
error_log("Failed to verify character: " . json_encode($user_data));
|
|
exit("Character verification failed");
|
|
}
|
|
|
|
$character_id = $user_data["CharacterID"];
|
|
$character_name = $user_data["CharacterName"];
|
|
|
|
// Save access & refresh tokens in session
|
|
if (!isset($_SESSION["characters"][$character_id])) {
|
|
$_SESSION["characters"][$character_id] = [
|
|
"name" => $character_name,
|
|
"access_token" => $token_data["access_token"],
|
|
"refresh_token" => $token_data["refresh_token"] ?? null,
|
|
];
|
|
} else {
|
|
error_log("Character data already exists for ID: $character_id. Skipping overwrite.");
|
|
}
|
|
|
|
// Redirect back to main page
|
|
header("Location: index.php");
|
|
exit();
|