pinterest / pinterest-python-sdk

An SDK that makes it quick and easy to build applications with Pinterest API.
Apache License 2.0
41 stars 27 forks source link

BUG - SDK Client pin creation fails but endpoint is working #128

Open tallestJake opened 2 months ago

tallestJake commented 2 months ago

Describe the bug

I'm able to create pins using the python requests package and endpoint provided in the Pinterest API docs but when I try using the SDK I get permissions error.

To Reproduce Unsuccessful using SDK:

from pinterest.client import PinterestSDKClient
from pinterest.organic.pins import Pin

PinterestSDKClient.set_default_access_token(<token>)

params = {
    "board_id": <board_id>,
    "ad_account_id": <ad_account>,
    "description": <description>,
    "link":  <link>,
    "title": <title>,
    "media_source":{
        'source_type':'image_base64',
        'data': <image>,
        'content_type':"image/png"
    }
Pin.create(**params)

The above returns the following error:

Reason: Not Found
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json', 'Content-Length': '38', 'pinterest-version': 'c7fe355', 'x-content-type-options': 'nosniff', 'x-frame-options': 'DENY', 'Access-Control-Allow-Credentials': 'true', 'p3p': 'CP="Pinterest does not have a P3P policy. You can find our privacy policy at https://www.pinterest.com/_/_/policy/privacy-policy."', 'x-envoy-upstream-service-time': '83', 'pinterest-generated-by': 'tpp-api-canary-0a0308c3', 'X-RateLimit-Limit': '100, 100;w=1, 1000;w=60', 'X-RateLimit-Remaining': '99', 'X-RateLimit-Reset': '1', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'x-pinterest-rid': '6639680265060241', 'Date': 'Tue, 14 May 2024 16:13:42 GMT', 'Alt-Svc': 'h3=":443"; ma=600', 'Connection': 'keep-alive', 'Set-Cookie': '_ir=0; Max-Age=1800; HttpOnly; Path=/; Secure', 'AKAMAI-GRN': '0.de6533b8.1715703222.1e8acbde', 'X-CDN': 'akamai'})
HTTP response body: {"code":50,"message":"Pin not found."}

The following python request works

import requests
params = {
    "board_id": <board_id>,
    "ad_account_id": <ad_account>,
    "description": <description>,
    "link":  <link>,
    "title": <title>,
    "media_source":{
        'source_type':'image_base64',
        'data': <image>,
        'content_type':"image/png"
    }
auth = {'Authorization': 'Bearer {}'.format(<token>)}
auth["Content-Type"] = "application/json"
pin = requests.post('https://api.pinterest.com/v5/pins', json=params, headers=self.auth).json()

Screenshot of response using above method: image

Additional Details:

Lonzarostore commented 1 month ago

hoe los ik dat op