Etsy API 分页 - 不知道如何访问其他页面

问题描述

所以,我遇到了问题,因为我没有 OAuth 1,所以我不得不努力访问 ETSY API。

我终于有了这个:

我的函数 __construct() :

parent::__construct();

    $this->allowForUser();
    $this->etsyDb = new EtsyordersModel;
    
    $this->client = new Etsy([
        'identifier'            =>      getApp()->getConfig('identifier'),'secret'                =>      getApp()->getConfig('secret'),'scope'                 =>      'listings_r transactions_r','callback_uri'          =>      'http://*****-*****.loc/etsyapp/next','access_token'          =>      getApp()->getConfig('access_token'),'access_token_secret'   =>      getApp()->getConfig('access_token_secret'),]);

这是我如何获取 URL 以访问我的 JSON 结果:

        $key = rawurlencode($oauthtoken) . "&" . rawurlencode($tokensecret);

        $method = "GET";
        $baseurl = "https://openapi.etsy.com/v2/shops/24749672/receipts/";
        $nonce = "1234";
        $timeNow = time();
        $oauthversion = '1.0';

        $paramstring = "oauth_consumer_key=" . $oauthconsumerkey . "&oauth_nonce=" . $nonce . "&oauth_signature_method=HMAC-SHA1" . "&oauth_timestamp=" . $timeNow . "&oauth_token=" . $clientsecret .  "&oauth_version=" . $oauthversion;

        // 
        // Signature GET to retrieve signature OAuth
        $encodeurl = $method . "&" . rawurlencode($baseurl) . "&" . rawurlencode($paramstring);

        $signature = hash_hmac( 'sha1',$encodeurl,$key,TRUE );
        $signature = base64_encode( $signature );
 
        // url JSON shop ETSY
        $curlurl = $baseurl . "?" . $paramstring . "&oauth_signature=" . $signature;
        
        // get JSON content in $orders
        $orders = file_get_contents($curlurl);

所以我得到了我的 JSON :

enter image description here

我有 90++ 个项目,但由于分页,它只显示了 25 个项目。

我尝试将 active?limit=100&offset=0 添加到我的 $baseurl(在它的末尾,作为签名计算的参数),但它显示 oauth_problem=signature_invalid&。我试着把它放在 $paramstring 相反,但结果相同。 如何显示所有结果,或者如何访问分页的第 2、3 等页面

我使用的是 PHP 7.4、XAMPP(最后一个版本之一),我没有 OAuth 1,所以我使用了包 Y0lk\OAuth1 和 thePHPleague\oauth1-client 的组合。

感谢您抽出宝贵时间。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)