Question

OAuth with Django: 'bytes' object has no attribute 'get'

  • 13 January 2021
  • 2 replies
  • 3835 views

I'm working through the Authorization Flow Quick Start App using Python Django. This required making a few changes to the Flask code provided, but most of the flow is working. The index page sends me to RingCentral login, which then sends me back to the test page as it should. But when I click on any of the three links on that page I get the same error:

AttributeError at /test/

'bytes' object has no attribute 'get'


Here's the slightly modified code that handles the test page:


def test(request):

platform = SyncConfig.rcsdk.platform()

platform.auth().set_data(request.session['sessionAccessToken'])

if platform.logged_in() == False:

return index(request)

api = request.GET.get('api')

if api == "extension":

resp = platform.get("/restapi/v1.0/account/~/extension")

return resp.response()._content

elif api == "extension-call-log":

resp = platform.get("/restapi/v1.0/account/~/extension/~/call-log")

return resp.response()._content

elif api == "account-call-log":

resp = platform.get("/restapi/v1.0/account/~/call-log")

return resp.response()._content

else:

return render(request, 'sync/test.html')


Has anyone setup a Django authorization flow and can show me where this is breaking?


2 replies

Looks like it crashed at this line in Django

api = request.GET.get('api')

Can you try this

api = request.GET['api']


I finally figured it out. Just returning resp.response()._content from a view was causing Django problems. I wrote a simple HTML template to display the contents of resp.response()._content, and returned a rendered template with the data included in the context.

Reply