chapter-three / AppleNewsAPI

This is a PHP library that allows you to publish content to Apple News and construct documents in the Apple News JSON format.
MIT License
38 stars 26 forks source link

WRONG_SIGNATURE When try to delete article #20

Open nemanja947 opened 7 years ago

nemanja947 commented 7 years ago

When i try to delete an article i get this error: PHP Notice: Array ( [code] => 401 [message] => HTTP/1.1 401 Unauthorized [response] => stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => WRONG_SIGNATURE ) ) ) )

What's weird is that before I delete it, I get the news over Get method, this is my code:

if ($item['AppleArticle']['status'] == 'deleted') { $response_get = $PublisherAPI->Get('/articles/{article_id}', array( 'article_id' => $item['AppleArticle']['appleId'] ) ); if (isset($response_get->data->id)) {

                    $response_delete = $PublisherAPI->Delete('/articles/{article_id}',
                        array(
                            'article_id' => $response_get->data->id
                        )
                    );
nguyentamgm commented 6 years ago

Same problem here, GET and POST are ok, DELETE doesn't work

nguyentamgm commented 6 years ago

I updated Curl/Curl.php and it is now working

    public function delete($url, $query_parameters = array(), $data = array())
    {
        if (is_array($url)) {
            $data = $query_parameters;
            $query_parameters = $url;
            $url = (string)$this->url;
        }

        $this->setUrl($url, $query_parameters);
        $this->setOpt(CURLOPT_CUSTOMREQUEST, 'DELETE');
// Start editing
        if (!empty($data)) {
            $this->setOpt(CURLOPT_POSTFIELDS, $this->buildPostData($data));
        }
// End editing
        return $this->exec();
    }

The reason is Apple News needs another type of signature when using POST data, and it seems to be like Apple News uses CURLOPT_POSTFIELDS from header to determine a POST action! 🤪