1

In an effort to be OAuth'd with Etsy, I have tried countless solutions in C# to at least start the authentication process (ie get the login URL):

eg

mashery.com, http://term.ie/oauth/example/client.php and question #8321034

but the response is always the same:

oauth_problem=signature_invalid&debug_sbs=GET&https%3A%2F%2Fopenapi.etsy.com%2Fv2%2Foauth%2Frequest_token&oauth_consumer_key%3D...my-consumer-key...%26oauth_nonce%3D2de91e1361d1906bbae04b15f42ab38d%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1502362164%26oauth_version%3D1.0%26scope%3Dlistings_w%2520listings_r

and so I'm resorting to the dreaded world of PHP...

On my machine, I've installed the following (Windows 10):

XAMPP (xampp-win32-7.1.7-0-VC14-installer) with default options
    JDK (jdk-8u144-windows-i586)
    JRE (jre-8u144-windows-i586)

php_oauth.dll ([php_oauth-2.0.2-7.1-ts-vc14-x86.zip][4]) and copying it to C:\xampp\php\ext

[cacert.pem][4], (dated Jun  7 03:12:05 2017) and coping it to the following directories:
            C:\xampp\perl\vendor\lib\Mozilla\CA
            C:\xampp\phpMyAdmin\vendor\guzzle\guzzle\src\Guzzle\Http\Resources

Apache and Tomcat would not run to begin with from XAMPP because it said that ports 443 and 80 were being used/blocked and so I duly changed these to 444 and 122 in

C:\xampp\apache\conf\extra\httpd-ssl.conf
C:\xampp\apache\conf\httpd.conf

All good so far but when I run the following script in my browser (http://localhost:444/dashboard/etsy.php):

<?php
    $base_uri = 'https://openapi.etsy.com';
    $api_key = 'my-etsy-api-key';
    $secret = 'my-etsy-api-secret';


    $oauth = new OAuth($api_key, $secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
    $req_token = $oauth->getRequestToken($base_uri .= "/v2/oauth/request_token?scope=listings_w%20transactions_r", 'oob');

    $login_url = $req_token['login_url'];
    print "Please log in and allow access: $login_url \n\n";

    $verifier = readline("Please enter verifier: ");
    $verifier = trim($verifier);
    $oauth->setToken($req_token['oauth_token'], $req_token['oauth_token_secret']);
    $acc_token = $oauth->getAccessToken($base_uri .= "/v2/oauth/access_token", null, $verifier);

    $oauth_token = $acc_token['oauth_token'];
    $oauth_token_secret = $acc_token['oauth_token_secret'];
    $oauth->setToken($oauth_token, $oauth_token_secret);

    print "Token: $oauth_token \n\n";
    print "Secret: $oauth_token_secret \n\n";
?>

I get the following error message:

Fatal error: Uncaught OAuthException: making the request failed (Peer certificate cannot be authenticated with given CA certificates) in C:\xampp\htdocs\dashboard\etsy.php:8 Stack trace: #0 C:\xampp\htdocs\dashboard\etsy.php(8): OAuth->getRequestToken('https://openapi...', 'oob') #1 {main} thrown in C:\xampp\htdocs\dashboard\etsy.php on line 8

I've tried running the script with each thread safe, x86 version of OAuth (http://windows.php.net/downloads/pecl/releases) - stop, restart Apache) but no luck.

I'm at my wits end.

How to I resolve this Peer certificate problem?

err1
  • 499
  • 9
  • 22

1 Answers1

2

Simply disable the SSL on local.

$oauth->disableSSLChecks()

Oauth by default using CURL SSL Certificate. The simple way for local apache server is to disable it. Either configure the SSL for the CURL. It will also resolve the issue for oauth.

as per php documentation

we can set the certificate path simply. $oauth->setCAPath("F:\xampp\php\extras\ssl\cacert.pem"); print_r($oauth->getCAPath());

You can also set the request engine to curl or php stream if the ssl is already configured. Official PHP documentation

Zia
  • 131
  • 1
  • 6