为了与Etsy进行OAuth,我在C#中尝试了无数的解决方案,至少启动了身份验证过程(即获取登录URL):
例如
mashery.com,http://term.ie/oauth/example/client.php和question #8321034
但响应总是一样的:
oauth_problem = signature_invalid&安培; debug_sbs = GET&安培; HTTPS%3A%2F%2Fopenapi.etsy.com%2Fv2%2Foauth%2Frequest_token&安培; oauth_consumer_key%3D ...我的消费者密钥...%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:使请求失败(Peer 证书无法使用给定的CA证书进行身份验证 C:\ xampp \ htdocs \ dashboard \ etsy.php:8堆栈跟踪:#0 C:\ XAMPP \ htdocs中\仪表板\ etsy.php(8): OAuth-&gt; getRequestToken('https://openapi ...','oob')#1 {main}抛出 在第8行的C:\ xampp \ htdocs \ dashboard \ etsy.php
我尝试使用每个线程安全运行脚本,x86版本的OAuth(http://windows.php.net/downloads/pecl/releases) - 停止,重新启动Apache)但没有运气。
我的智慧结束了。
如何解决此对等证书问题?
答案 0 :(得分:1)
只需在本地禁用SSL。
$oauth->disableSSLChecks()
Oauth默认使用CURL SSL证书。本地apache服务器的简单方法是禁用它。为CURL配置SSL。它也将解决oauth的问题。
根据php documentation
我们可以简单地设置证书路径。 $ oauth-&GT; setCAPath( “F:\ XAMPP \ PHP \额外\ SSL \ cacert.pem”); 的print_r($ oauth-&GT; getCAPath());
如果已配置ssl,您还可以将请求引擎设置为curl或php stream。 Official PHP documentation