<?php

// Require the osapi library
require_once "../src/osapi.php";
// Enable logger.
osapiLogger::setLevel(osapiLogger::INFO);
osapiLogger::setAppender(new osapiConsoleAppender());
$consumerKey = 'CONSUMER_KEY';
$consumerSecret = 'CONSUMER_SECRET';
$callbackUrl = 'CALLBACK_URL';
// needed to scope the access token storage
$localUserId = '';
$storage = new osapiFileStorage('/tmp/osapi');
$provider = new osapiVzOAuth2Provider(osapiVzOAuth2Provider::STUDIVZ);
if (isset($_GET['platform']) && $_GET['platform'] === 'schuelervz') {
    $provider = new osapiVzOAuth2Provider(osapiVzOAuth2Provider::SCHUELERVZ);
}
$auth = osapiOAuth2::performOAuthLogin($consumerKey, $consumerSecret, $storage, $provider, $callbackUrl, 'openid', array('gender', 'emails', 'thumbnailUrl'), 'my custom message', 'state', $localUserId);
if ($auth->getAccessToken()->getplatform() === 'schuelervz') {
    $provider = new osapiVzOAuth2Provider(osapiVzOAuth2Provider::SCHUELERVZ);
}
$osapi = new osapi($provider, $auth);
// Start a batch so that many requests may be made at once.
$batch = $osapi->newBatch();
// Fetch the current user.
$self_request_params = array('userId' => '@me', 'groupId' => '@self', 'fields' => array());
$batch->add($osapi->people->get($self_request_params), 'self');
$result = $batch->execute();
var_dump($result);
 /**
  *
  * @param string $consumerKey
  * @param string $consumerSecret
  * @param osapiStorage $storage
  * @param osapiProvider $provider
  * @param string $callbackUrl
  * @param string $scope optional
  * @param array $fields optional
  * @param string $message optional
  * @param string $state optional
  * @param string $localUserId optional
  * @return osapiOAuth2
  */
 public static function performOAuthLogin($consumerKey, $consumerSecret, osapiStorage $storage, osapiProvider $provider, $callbackUrl, $scope = null, array $fields = array(), $message = '', $state = null, $localUserId = null)
 {
     $auth = new osapiOAuth2($consumerKey, $consumerSecret, $storage, $provider, $callbackUrl, $scope, $state, $localUserId);
     if (($token = $storage->get($auth->storageKey)) !== false) {
         $auth->accessToken = $token;
         if ($token->getSignature() && $token->getIssued_at()) {
             $this->verifySignature($token->getSignature(), $consumerSecret, $token->getAccess_token(), $token->getIssued_at(), $token->getUser_id() ? $token->getUser_id() : '', '');
             $auth->userId = $token->getUser_id();
         }
     } else {
         if (isset($_GET['code'])) {
             $auth->service->getAccessToken();
             $auth->redirectToOriginal();
         } else {
             if (isset($_GET['error'])) {
                 throw new osapiException($_GET['error'] . (isset($_GET['error_description']) ? ' ' . $_GET['error_description'] : ''), null, null);
             } else {
                 $auth->storeCallbackUrl();
                 $auth->service->authorize($fields, $message);
             }
         }
     }
     return $auth;
 }