Search code examples
pythondebugginginstagram-api

Debugging Python Instagram API client - 'NoneType' has no len()


newbie to Python here, so bear with me...

I'm trying to use the Python client for Instagram API, and am entering a valid access token and user ID when passing the token into the InstagramAPI constructor (yes, I'm running the code with my access token and user ID inserted, but left out for posting the question):

from instagram.client import InstagramAPI

access_token = "YOUR_ACCESS_TOKEN"
api = InstagramAPI(access_token=access_token)
recent_media, next_ = api.user_recent_media(user_id="userid", count=10)
for media in recent_media:
   print media.caption.text

but in terminal I keep getting this error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/bind.py", line 196, in _call
    return method.execute()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/bind.py", line 182, in execute
    include_secret=self.include_secret)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/oauth2.py", line 224, in prepare_request
    url = self._full_url_with_params(path, params, include_secret)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/oauth2.py", line 148, in _full_url_with_params
    self._full_query_with_params(params) +
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/oauth2.py", line 144, in _full_url
    self._signed_request(path, {}, include_signed_request, include_secret))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/oauth2.py", line 172, in _signed_request
    return "&sig=%s" % self._generate_sig(path, params, self.api.client_secret)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/instagram/oauth2.py", line 127, in _generate_sig
    return  hmac.new(secret, sig, sha256).hexdigest()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hmac.py", line 136, in new
    return HMAC(key, msg, digestmod)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hmac.py", line 71, in __init__
    if len(key) > blocksize:
TypeError: object of type 'NoneType' has no len()

Any advice on how to debug this error? Specifically, what is the possible source of this error?

TypeError: object of type 'NoneType' has no len()

Solution

  • you are facing a bug because the doc (readme) on github is not up-to-date. Read this issue carefully to find your solution

    Missing argument for InstagramAPI object instance

    OAuth Signing is broken in 1.3.1

    your code should be:

    from instagram.client import InstagramAPI 
    
    access_token = "YOUR_ACCESS_TOKEN" 
    client_secret = "YOUR_CLIENT_SECRET"
    api = InstagramAPI(client_secret=client_secret, access_token=access_token)