Я использовал код здесь https://github.com/ozgur/python-linkedin с моим идентификатором и ключом. Если я запустил этот код и перейду на localhost: 8080 (я использовал этот порт), я получаю следующее исключение:
127.0.0.1 - - [31/Aug/2018 13:25:49] "GET / HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 65176)
Traceback (most recent call last):
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 647, in process_request_thread
self.finish_request(request, client_address)
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 357, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\http\server.py", line 646, in __init__
super().__init__(*args, **kwargs)
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 717, in __init__
self.handle()
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\http\server.py", line 426, in handle
self.handle_one_request()
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\http\server.py", line 414, in handle_one_request
method()
File "C:/Users/osads/PycharmProjects/python-linkedin-master/examples/http_api.py", line 60, in do_GET
open_new_tab(liw.authentication.authorization_url)
File "C:\Users\osads\PycharmProjects\python-linkedin-master\linkedin\linkedin.py", line 101, in authorization_url
qsl = ['%s=%s' % (quote(k), quote(v)) for k, v in qd.items()]
File "C:\Users\osads\PycharmProjects\python-linkedin-master\linkedin\linkedin.py", line 101, in <listcomp>
qsl = ['%s=%s' % (quote(k), quote(v)) for k, v in qd.items()]
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\urllib\parse.py", line 791, in quote
return quote_from_bytes(string, safe)
File "C:\Users\osads\AppData\Local\Programs\Python\Python37-32\lib\urllib\parse.py", line 816, in quote_from_bytes
raise TypeError("quote_from_bytes() expected bytes")
TypeError: quote_from_bytes() expected bytes
Как это исправить?
UPD: код от linkedin.py
@property
def authorization_url(self):
qd = {'response_type': 'code',
'client_id': self.key,
'scope': (' '.join(self.permissions)).strip(),
'state': self.state or self._make_new_state(),
'redirect_uri': self.redirect_uri}
# urlencode uses quote_plus when encoding the query string so,
# we ought to be encoding the qs by on our own.
qsl = ['%s=%s' % (quote(k), quote(v)) for k, v in qd.items()]
return '%s?%s' % (self.AUTHORIZATION_URL, '&'.join(qsl))
Значение этой записи
'state': self.state or self._make_new_state()
является булевым. quote
ожидает строку.
Это ваша ошибка в двух словах:
from urllib.parse import quote
quote(True)
Я не знаю, что именно вы делаете, но это исправит вашу ошибку (и, возможно, создаст пару новых).
'state': str(self.state or self._make_new_state())