1. Go to this page and download the library: Download asaritech/ukey1-php-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/ */
asaritech / ukey1-php-sdk example snippets
session_start();
use \Ukey1\App;
use \Ukey1\Endpoints\Authentication\Connect;
use \Ukey1\Endpoints\Authentication\SystemScopes;
use \Ukey1\Generators\RandomString;
// Set your domain name including protocol
//App::setDomain("http://example.org"); // if not provided, it will be set automatically
define("APP_ID", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
define("SECRET_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// Don't forget to use try/catch, the SDK may throw exceptions
try {
// Entity of your app
$app = new App();
$app->setAppId(APP_ID)
->setSecretKey(SECRET_KEY);
// You need a request ID (no need to be unique but it's better)
// It may be a random string or number
// But it may also be your own reference ID
// Maximum length is 64 bytes (=128 chars)
$requestId = RandomString::generate(64);
// This is an URL for redirection back to the app
// Do you know what is absolutely perfect?
// - it may be unique
// - it may contain query parameters and/or fragment
$returnUrl = "http://example.org/login.php?action=check&user=XXX#fragment";
// You can check what permissions you can ask (useful for development purposes)
$systemModule = new SystemScopes($app);
$permissions = $systemModule->getAvailablePermissions();
//print_r($permissions);exit;
// Endpoint module
$connectModule = new Connect($app);
$connectModule->setRequestId($requestId)
->setReturnUrl($returnUrl)
->setScope([
"country",
"language",
"firstname",
"surname",
"email",
"image"
]);
$connectId = $connectModule->getId(); // $connectId is our reference ID (UUID, exactly 36 chars)
// Store $requestId and $connectId in your database or session, you will need them later
$_SESSION["requestId"] = $requestId;
$_SESSION["connectId"] = $connectId;
// Redirect user to Ukey1 Gateway
$connectModule->redirect();
} catch (\Exception $e) {
echo "Unfortunatelly, an error was occured: " . $e->getMessage();
exit;
}
session_start();
use \Ukey1\App;
use \Ukey1\Endpoints\Authentication\AccessToken;
use \Ukey1\Endpoints\Authentication\User;
define("APP_ID", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
define("SECRET_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// Don't forget to use try/catch, the SDK may throw exceptions
try {
$app = new App();
$app->setAppId(APP_ID)
->setSecretKey(SECRET_KEY);
// Endpoint module
// You needs $requestId and $connectId that you previously stored in your database or session
// WARNING: DO NOT use values from GET query - the SDK will test if GET parameters are equal to those you provide here...
$tokenModule = new AccessToken($app);
$tokenModule->setRequestId($_SESSION["requestId"])
->setConnectId($_SESSION["connectId"]);
$check = $tokenModule->check(); // returns true if user authorized the request
if ($check) {
$accessToken = $tokenModule->getAccessToken();
// You can also get token expiration (in usual case it's only few minutes) and the list of granted permissions
//$accessTokenExpiration = $tokenModule->getAccessTokenExpiration();
//$grantedScope = $tokenModule->getScope();
// You can now unset request ID and connect ID from session or your database
unset($_SESSION["requestId"], $_SESSION["connectId"]);
// Now you can read user's data
$userModule = new User($app);
$userModule->setAccessToken($accessToken);
// If you don't need any personal data but ID, you can get user's ID without any other request (because it's stored in access token)
$userId = $userModule->getId();
// If you need more data, the following method will trigger request to get them
$user = $module->getUser();
$scope = $user->getScope();
$firstname = $user->getFirstname();
$surname = $user->getSurname();
$language = $user->getLanguage();
$country = $user->getCountry();
$email = $user->getEmail();
$image = $user->getImageUrl();
// For other permissions (if applicable) you can use general `get()` method
$customScope = $user->get("another-available-scope");
// ... more your code ...
} else {
// The request has been canceled by user...
}
} catch (\Exception $e) {
echo "Unfortunatelly, an error was occured: " . $e->getMessage();
exit;
}
session_start();
use \Ukey1\App;
use \Ukey1\Endpoints\Authentication\ExtranetUsers;
// Set your domain name including protocol
//App::setDomain("http://example.org"); // if not provided, it will be set automatically
define("APP_ID", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
define("SECRET_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// Don't forget to use try/catch, the SDK may throw exceptions
try {
// Entity of your app
$app = new App();
$app->setAppId(APP_ID)
->setSecretKey(SECRET_KEY);
// Endpoint module
$extranetModule = new ExtranetUsers($app);
$extranetModule->setEmail("[email protected]")
->setLocale("en_GB");
$referenceId = $extranetModule->getReferenceId(); // $referenceId is our extranet reference ID (UUID, exactly 36 chars)
// Store $referenceId in your database, you may need it later when you want to delete the user
// Meanwhile, Ukey1 have just sent an email with the invitation link
// Next steps?
// - user clicks to the invitation link
// - user signs in to Ukey1 gateway
// - user is redirected back to homepage (or separated login page) of your app
// - you can directly initiate a standard Connection request (and redirect to Ukey1)
// - user is already logged in Ukey1, so they only must authorize your app
// - That's it!
} catch (\Exception $e) {
echo "Unfortunatelly, an error was occured: " . $e->getMessage();
exit;
}
bash
$ composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.