1. Go to this page and download the library: Download indieauth/client 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/ */
indieauth / client example snippets
if(!isset($_POST['url'])) {
die('Missing URL');
}
// Start a session for the library to be able to save state between requests.
session_start();
// You'll need to set up two pieces of information before you can use the client,
// the client ID and and the redirect URL.
// The client ID should be the home page of your app.
IndieAuth\Client::$clientID = 'https://example.com/';
// The redirect URL is where the user will be returned to after they approve the request.
IndieAuth\Client::$redirectURL = 'https://example.com/redirect.php';
// Pass the user's URL and your requested scope to the client.
// If you are writing a Micropub client, you should
session_start();
IndieAuth\Client::$clientID = 'https://example.com/';
IndieAuth\Client::$redirectURL = 'https://example.com/redirect.php';
list($response, $error) = IndieAuth\Client::complete($_GET);
if($error) {
echo "<p>Error: ".$error['error']."</p>";
echo "<p>".$error['error_description']."</p>";
} else {
// Login succeeded!
// The library will return the user's profile URL in the property "me"
// It will also return the full response from the authorization or token endpoint, as well as debug info
echo "URL: ".$response['me']."<br>";
if(isset($response['response']['access_token'])) {
echo "Access Token: ".$response['response']['access_token']."<br>";
echo "Scope: ".$response['response']['scope']."<br>";
}
// The full parsed response from the endpoint will be available as:
// $response['response']
// The raw response:
// $response['raw_response']
// The HTTP response code:
// $response['response_code']
// You'll probably want to save the user's URL in the session
$_SESSION['user'] = $user['me'];
}
// Normalize whatever the user entered to be a URL, e.g. "example.com" to "https://example.com/"
$url = IndieAuth\Client::normalizeMeURL($url);
$metadataEndpoint = IndieAuth\Client::discoverMetadataEndpoint($url);
if ($metadataEndpoint) {
$response = self::discoverIssuer($metadataEndpoint);
if ($response instanceof IndieAuth\ErrorResponse) {
// handle the error response, array with keys `error` and `error_description`
die(json_encode($response->getArray()));
}
$_SESSION['indieauth_issuer'] = $response;
}
// Normalize whatever the user entered to be a URL, e.g. "example.com" to "http://example.com/"
$url = IndieAuth\Client::normalizeMeURL($url);
$authorizationEndpoint = IndieAuth\Client::discoverAuthorizationEndpoint($url);
$url = IndieAuth\Client::normalizeMeURL($url);
$scope = 'profile create'; // Request profile info as well as an access token with the "create" scope
// These are two random strings. The helper methods in the library will use an available random number generaton depending on the PHP version.
$_SESSION['state'] = IndieAuth\Client::generateStateParameter();
$_SESSION['code_verifier'] = IndieAuth\Client::generatePKCECodeVerifier();
// you'll need to verify these later
$_SESSION['user_entered_url'] = $url;
$_SESSION['authorization_endpoint'] = $authorizationEndpoint;
$authorizationURL = IndieAuth\Client::buildAuthorizationURL($authorizationEndpoint, [
'me' => $url,
'redirect_uri' => $redirect_uri,
'client_id' => $client_id,
'scope' => $scope,
'state' => $_SESSION['state'],
'code_verifier' => $_SESSION['code_verifier'],
]);
$response = self::validateStateMatch($_GET, $_SESSION['indieauth_state']);
if ($response instanceof IndieAuth\ErrorResponse) {
// handle the error response, array with keys `error` and `error_description`
die(json_encode($response->getArray()));
}
if (isset($_SESSION['indieauth_issuer'])) {
$response = self::validateIssuerMatch($_GET, $_SESSION['indieauth_issuer']);
if ($response instanceof IndieAuth\ErrorResponse) {
// handle the error response, array with keys `error` and `error_description`
die(json_encode($response->getArray()));
}
}
if($response['me'] != $_SESSION['user_entered_url']) {
$authorizationEndpoint = IndieAuth\Client::discoverAuthorizationEndpoint($response['me']);
if($authorizationEndpoint != $_SESSION['authorization_endpoint']) {
die("The authorization endpoint at the profile URL is not the same as the one used to begin the flow!");
}
}
IndieAuth\Client::$http->set_user_agent('Your User Agent String');
IndieAuth\Client::$random_byte_count = 16;
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.