print_r($request->getResponse()->getOAuthResponse()); } } $oauth_response = $request->getResponse()->getOAuthResponse(); setOAuthSession($oauth_response['oauth_token'], $oauth_response['oauth_token_secret']); printf('<a href="%s">Click here to Authorize</a>', $xero->getAuthorizeURL($oauth_response['oauth_token'])); exit; } else { $xero->getOAuthClient()->setToken($oauth_session['token'])->setTokenSecret($oauth_session['token_secret']); if (isset($_REQUEST['oauth_verifier'])) { $xero->getOAuthClient()->setVerifier($_REQUEST['oauth_verifier']); $url = new URL($xero, URL::OAUTH_ACCESS_TOKEN); $request = new Request($xero, $url); $request->send(); $oauth_response = $request->getResponse()->getOAuthResponse(); setOAuthSession($oauth_response['oauth_token'], $oauth_response['oauth_token_secret'], $oauth_response['oauth_expires_in']); //drop the qs $uri_parts = explode('?', $_SERVER['REQUEST_URI']); //Just for demo purposes header(sprintf('Location: http%s://%s%s', isset($_SERVER['HTTPS']) ? 's' : '', $_SERVER['HTTP_HOST'], $uri_parts[0])); exit; } } //Otherwise, you're in. print_r($xero->load('Accounting\\Organisation')->execute()); //The following two functions are just for a demo - you should use a more robust mechanism of storing tokens than this! function setOAuthSession($token, $secret, $expires = null) { // expires sends back an int if ($expires !== null) { $expires = time() + intval($expires);
$request->setParameter('oauth_session_handle', $oauth_session['session_handle']); $request->send(); $oauth_response = $request->getResponse()->getOAuthResponse(); $expires = time() + intval($oauth_response['oauth_expires_in']); setOAuthSession($oauth_response['oauth_token'], $oauth_response['oauth_token_secret'], $expires, $oauth_response['oauth_session_handle']); $xero->getOAuthClient()->setToken($oauth_response['oauth_token'])->setTokenSecret($oauth_response['oauth_token_secret']); } else { $xero->getOAuthClient()->setToken($oauth_session['token'])->setTokenSecret($oauth_session['token_secret']); if (isset($_REQUEST['oauth_verifier'])) { $xero->getOAuthClient()->setVerifier($_REQUEST['oauth_verifier']); $url = new URL($xero, URL::OAUTH_ACCESS_TOKEN); $request = new Request($xero, $url); $request->send(); $oauth_response = $request->getResponse()->getOAuthResponse(); $expires = time() + intval($oauth_response['oauth_expires_in']); setOAuthSession($oauth_response['oauth_token'], $oauth_response['oauth_token_secret'], $expires, $oauth_response['oauth_session_handle']); //drop the qs $uri_parts = explode('?', $_SERVER['REQUEST_URI']); //Just for demo purposes header(sprintf('Location: http%s://%s%s', isset($_SERVER['HTTPS']) ? 's' : '', $_SERVER['HTTP_HOST'], $uri_parts[0])); exit; } } // We are in! Grab some journals... $journals = $xero->load('Accounting\\Journal')->execute(); echo sprintf('Found %s journals', count($journals)); /*foreach ($journals as $journal) { json_encode($journal); }*/ //The following two functions are just for a demo - you should use a more robust mechanism of storing tokens than this! function setOAuthSession($token, $secret, $expires = null, $session_handle = null)