1

为了使用 Etsy 进行 OAuth,我在 C# 中尝试了无数解决方案来至少启动身份验证过程(即获取登录 URL):

例如

mashery.comhttp://term.ie/oauth/example/client.php问题 #8321034

但反应总是一样的:

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

所以我求助于可怕的 PHP 世界......

在我的机器上,我安装了以下(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 和 Tomcat 不会从 XAMPP 开始运行,因为它说端口 443 和 80 正在被使用/阻止,所以我适时将它们更改为 444 和 122

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

到目前为止一切顺利,但是当我在浏览器中运行以下脚本时(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";
?>

我收到以下错误消息:

致命错误:未捕获的 OAuthException:在 C:\xampp\htdocs\dashboard\etsy.php:8 中使请求失败(对等证书无法使用给定的 CA 证书进行身份验证)堆栈跟踪:#0 C:\xampp\htdocs\dashboard\ etsy.php(8): OAuth->getRequestToken(' https://openapi ...', 'oob') #1 {main} 在第 8 行的 C:\xampp\htdocs\dashboard\etsy.php 中抛出

我已经尝试使用每个线程安全的 x86 版本的 OAuth ( http://windows.php.net/downloads/pecl/releases ) 运行脚本 - 停止,重新启动 Apache) 但没有运气。

我无计可施。

如何解决此对等证书问题?

4

1 回答 1

2

只需在本地禁用 SSL。

$oauth->disableSSLChecks()

Oauth 默认使用 CURL SSL 证书。本地 apache 服务器的简单方法是禁用它。为 CURL 配置 SSL。它还将解决 oauth 的问题。

根据 php文档

我们可以简单地设置证书路径。$oauth->setCAPath("F:\xampp\php\extras\ssl\cacert.pem"); print_r($oauth->getCAPath());

如果已经配置了 ssl,您还可以将请求引擎设置为 curl 或 php 流。 官方 PHP 文档

于 2017-11-21T11:24:39.303 回答