phpoauthLib Etsy login getAbsoluteUri() on a non-object

194 views Asked by At

I've been trying to set up OAuth for Etsy to use in a project but having trouble even getting the login page to load using PhpoAuthLib. Highly likely my low level of knowledge regarding the use of Oauth.

Currently this is my login page which is almost identical to the example given by the developer.

<?php
/**
 * Example of retrieving an authentication token of the Etsy service
 *
 * PHP version 5.4
 *
 * @author     IƱaki Abete <[email protected]>
 * @copyright  Copyright (c) 2013 The authors
 * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
 */
use OAuth\OAuth1\Service\Etsy;
use OAuth\Common\Storage\Session;
use OAuth\Common\Consumer\Credentials;
/**
 * Bootstrap the example
 */

require_once 'OAuth/bootstrap.php';
// init contains my secret and key values
require_once 'OAuth/init.php';
// Session storage
$storage = new Session();

// Setup the credentials for the requests
$credentials = new Credentials(
    $servicesCredentials['etsy']['key'],
    $servicesCredentials['etsy']['secret'],
    $currentUri->getAbsoluteUri() 
);

// Instantiate the Etsy service using the credentials, http client and storage mechanism for the token
/** @var $etsyService Etsy */
$etsyService = $serviceFactory->createService('Etsy', $credentials, $storage);
if (!empty($_GET['oauth_token'])) {
    $token = $storage->retrieveAccessToken('Etsy');
    // This was a callback request from Etsy, get the token
    $etsyService->requestAccessToken(
        $_GET['oauth_token'],
        $_GET['oauth_verifier'],
        $token->getRequestTokenSecret()
    );
    // Send a request now that we have access token
    $result = json_decode($etsyService->request('/private/users/__SELF__'));
    echo 'result: <pre>' . print_r($result, true) . '</pre>';
} elseif (!empty($_GET['go']) && $_GET['go'] === 'go') {
    $response = $etsyService->requestRequestToken();
    $extra = $response->getExtraParams();
    $url = $extra['login_url'];
    header('Location: ' . $url);
} else {
    $url = $currentUri->getRelativeUri() . '?go=go';
    echo "<a href='$url'>Login with Etsy!</a>";
}

When running the page i get a fatal error of

Call to a member function getAbsoluteUri() on a non-object

I've been into the bootstrap.php and echoed a statement at the end which works fine so doesnt seem to be erroring there. The error is on the line with

 $currentUri->getAbsoluteUri() 

not sure if it matters but the login page is located at mywebsite/folder/folder/etsylogin.php.. would this make any difference?

0

There are 0 answers