function makeSubscriptionRequest($config, $topic, $fwd, $accessToken = null) { $subscriptionUrl = sprintf('%s/index.php?subscriptions', $config['api_root']); $callbackUrl = sprintf('%s/subscriptions.php?fwd=%s', rtrim(preg_replace('#index.php$#', '', getBaseUrl()), '/'), rawurlencode($fwd)); $postFields = array('hub.callback' => $callbackUrl, 'hub.mode' => !empty($accessToken) ? 'subscribe' : 'unsubscribe', 'hub.topic' => $topic, 'oauth_token' => $accessToken, 'client_id' => $config['api_key']); return array('response' => makeCurlPost($subscriptionUrl, $postFields, false)); }
$message .= '<br />Afterwards, you can test JavaScript by clicking the link below.'; break; } // step 4 $json = makeCurlPost($tokenUrl, $postFields); $message = renderAccessTokenMessage($tokenUrl, $json); break; case 'refresh': // this is the refresh token flow if (empty($_REQUEST['refresh_token'])) { $message = 'Refresh request must have `refresh_token` query parameter!'; break; } $tokenUrl = sprintf('%s/index.php?oauth/token', $config['api_root']); $postFields = array('grant_type' => 'refresh_token', 'client_id' => $config['api_key'], 'client_secret' => $config['api_secret'], 'refresh_token' => $_REQUEST['refresh_token']); $json = makeCurlPost($tokenUrl, $postFields); $message = renderAccessTokenMessage($tokenUrl, $json); break; case 'request': // step 5 if (!empty($accessToken) && !empty($_REQUEST['url'])) { list($body, $json) = makeRequest($_REQUEST['url'], $config['api_root'], $accessToken); if (empty($json)) { $message = 'Unexpected response from server: ' . var_export($body, true); } else { $message = renderMessageForJson($_REQUEST['url'], $json); if ($_REQUEST['url'] === 'users/me') { $topic = 'user_notification_' . $json['user']['user_id']; } } }
<?php require_once 'functions.php'; require_once 'jwt_functions.php'; $config = loadConfiguration(); if (empty($config['api_root'])) { displaySetup(); } if (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'obtain' && !empty($_REQUEST['private_key'])) { $assertion = generateJwtAssertion($_REQUEST['private_key'], $config['api_key'], !empty($_REQUEST['user_id']) ? intval($_REQUEST['user_id']) : 0, $config['api_root']); $url = sprintf('%s/index.php?oauth/token', $config['api_root']); $json = makeCurlPost($url, array('grant_type' => 'urn:ietf:params:oauth:grant-type:jwt-bearer', 'assertion' => $assertion)); $message = renderMessageForJson('obtain', $json); if (!empty($json['access_token'])) { $accessToken = $json['access_token']; } } ?> <?php require 'html/header.php'; ?> <h3>JWT Bearer Grant Type</h3> <?php if (!empty($message)) { ?> <div class="message"><?php echo $message; ?>
<?php require_once 'functions.php'; if (!empty($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'GET') { if (!empty($_REQUEST['hub_challenge'])) { // intent verification, just echo back the challenge die($_REQUEST['hub_challenge']); } } elseif (!empty($_REQUEST['fwd'])) { // real callback $contents = file_get_contents('php://input'); makeCurlPost($_REQUEST['fwd'], $contents); }