1. Go to this page and download the library: Download goodid/goodid-php55-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
goodid / goodid-php55-sdk example snippets
// GoodID Login Initiation Endpoint (e.g. goodid-endpoint.php)
// Load the SDK and other dependencies
pers\Key\RSAPrivateKey;
use GoodID\Helpers\OpenIDRequestSource\OpenIDRequestObject;
use GoodID\ServiceLocator;
// -- Option 1 --
// You can use our default session data handler.
// In this case you need to start the session first.
session_start();
$serviceLocator = new ServiceLocator();
// -- Option 2 --
// Or you can add your own session data handler
// by defining a class which implements \GoodID\Helpers\SessionDataHandlerInterface
// Add that to the $serviceLocator.
$serviceLocator->setSessionDataHandler(new CustomSessionDataHandler());
try {
// Simply create and run our object, it will take care of everything
GoodIDEndpointFactory::createGoodIDEndpoint(
$serviceLocator,
"YOUR-CLIENT-ID",
new RSAPrivateKey("YOUR-SIG-PRIV-KEY-PEM-STRING"),
new RSAPrivateKey("YOUR-ENC-PRIV-KEY-PEM-STRING"),
new OpenIDRequestObject("YOUR-CLAIMS-JSON-STRING"),
"YOUR-REDIRECT-URI"
)->run();
} catch (GoodIDException $e) {
error_log('Login initiation failed: ' . $e->getMessage());
http_response_code(500);
echo "Internal Server Error";
}
// Redirect URI / landing page
IDResponse;
use GoodID\Exception\GoodIDException;
use GoodID\Helpers\Key\RSAPrivateKey;
use GoodID\ServiceLocator;
// -- Option 1 --
// You can use our default session data handler.
// In this case you need to start the session first.
session_start();
$serviceLocator = new ServiceLocator();
// -- Option 2 --
// Or you can add your own session data handler
// by defining a class which implements \GoodID\Helpers\SessionDataHandlerInterface
// Add that to the $serviceLocator.
$serviceLocator->setSessionDataHandler(new CustomSessionDataHandler());
// If there is a "code" parameter, it must be a login attempt
if (filter_has_var(INPUT_GET, 'code') || filter_has_var(INPUT_GET, 'error')) {
try {
// The GoodIDResponse object collects, decrypts and verifies the response data
$response = new GoodIDResponse(
$serviceLocator,
"YOUR-CLIENT-ID",
"YOUR-CLIENT-SECRET",
new RSAPrivateKey("YOUR-SIG-PRIV-KEY-PEM-STRING"),
new RSAPrivateKey("YOUR-ENC-PRIV-KEY-PEM-STRING")
);
if($response->hasError()) {
$error = $gidResponse->getError();
$errorDescription = $gidResponse->getErrorDescription();
// The login has failed with an OpenID Authentication Error Response
// For example the user pressed cancel in the app
} else {
// Subject identifier
$subjectIdentifier = $response->getSub();
// The data provided by the user
$claims = $response->getClaims()->toArray();
// For debugging:
// echo "Sub: $subjectIdentifier\n";
// echo "Claims: ";
// print_r($claims);
// exit;
// Now begins the substantial part of the job:
// You can do your custom validation of claims.
// You can log in (or register) the user:
// Read/write your DB, regenerate session id, etc.
// Good luck :-)
}
} catch (GoodIDException $e) {
// The login has failed with an exception
// The identity of the user cannot be verified
error_log('Login failed: ' . $e->getMessage());
}
header('Location: /');
exit;
}
use GoodID\Helpers\Logger\RemoteLogger;
use GoodID\Helpers\Logger\Log;
use GoodID\ServiceLocator;
// Assume $response is a GoodIDResponseObject, as seen in "Redirect URI (Landing page)"
// And assume you have validated phone_number and billto.phone_number and they both had some errors.
try {
if($response->hasAccessToken()) {
$logger = new RemoteLogger(
$response->getAccessToken(),
(new ServiceLocator())->getServerConfig()
);
$logger->log("phone_number", "Data does not conform to ...", Log::LEVEL_ERROR);
$logger->log("billto.phone_number", "Data does not conform to ...", Log::LEVEL_ERROR);
$logger->send();
}
} catch (GoodIDException $e) {
error_log('Remote logging failed: ' . $e->getMessage());
}
use GoodID\Helpers\Key\RSAPrivateKey;
use GoodID\Helpers\OpenIDRequestSource\OpenIDRequestObject;
use GoodID\ServiceLocator;
$requestObject = new OpenIDRequestObject("Your claimset as a JSON string");
$jwt = $requestObject->generateJwt(
new RSAPrivateKey("The content of your sig.pem as a string"),
"Your client id",
"Your default redirect URI",
(new ServiceLocator())->getServerConfig()
);
echo $jwt;
use GoodID\Helpers\Key\JwkSetGenerator;
use GoodID\Helpers\Key\RSAPublicKey;
$sigKey = new RSAPublicKey("The content of your sig.pub as a string");
$encKey = new RSAPublicKey("The content of your enc.pub as a string");
$jwkSetGenerator = new JwkSetGenerator();
$jwksUriContent = $jwkSetGenerator->generateJwksUriContent($sigKey, $encKey);
use GoodID\Helpers\Key\JwkSetGenerator;
use GoodID\Helpers\Key\RSAPublicKey;
$sigKey = new RSAPublicKey("The content of your sig.pub as a string");
$encKey = new RSAPublicKey("The content of your enc.pub as a string");
$jwkSetGenerator = new JwkSetGenerator();
$jwksUriContent = $jwkSetGenerator->generateJwksUriContent(
$sigKey,
$encKey,
'https://your-url.com/jwksuri.json'
);
// Assume that $response is a GoodID response
$claims = $response->getClaims();
$f = fopen('temporary.jpeg', 'wb');
fwrite($f, base64_decode($claims->get('picture_data')));
fclose($f);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.