Search code examples
pythonpython-3.xgeojsongeojsonio

display() in geojsonio gives 401 error


I am trying to Visualize a geojson file.

import geojsonio as gj
contents = open("taluk.geojson").read()
gj.display(contents)

But it gives the below error:

AuthenticationFailed                      Traceback (most recent call last)
<ipython-input-27-2a5e2058a16e> in <module>()
----> 1 gj.display(contents)

C:\Anaconda\lib\site-packages\geojsonio\geojsonio.py in display(contents, domain, force_gist)
     34 
     35     """
---> 36     url = make_url(contents, domain, force_gist)
     37     webbrowser.open(url)
     38     return url

C:\Anaconda\lib\site-packages\geojsonio\geojsonio.py in make_url(contents, domain, force_gist, size_for_gist)
     91         url = data_url(contents, domain)
     92     else:
---> 93         gist = _make_gist(contents)
     94         url = gist_url(gist.id, domain)
     95 

C:\Anaconda\lib\site-packages\geojsonio\geojsonio.py in _make_gist(contents, description, filename)
    170     ghapi = github3.GitHub()
    171     files = {filename: {'content': contents}}
--> 172     gist = ghapi.create_gist(description, files)
    173 
    174     return gist

C:\Anaconda\lib\site-packages\github3\decorators.py in auth_wrapper(self, *args, **kwargs)
     35                 '{"message": "Requires authentication"}'
     36             )
---> 37             raise error_for(r)
     38     return auth_wrapper
     39 

AuthenticationFailed: 401 Requires authentication


Solution

  • It tries to create a gist on GitHub. My guess is that it was once possible to do this anonymously, but not anymore. Now you need to authenticate.

    What needs to be changed is the _make_gist in geojsonio.py. Replace

    ghapi = github3.GitHub()
    

    by

    ghapi = github3.login('username', password='password')
    

    See also: https://github.com/jwass/geojsonio.py/issues/14