Нужна помощь для использования LinkedIn API v2 (oauth2) с Python

1

Я использовал код здесь 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))
  • 0
    Вы просто используете примеры из python-linkedin? Вероятно, стоит опубликовать соответствующую часть примера, чтобы мы могли видеть, что происходит. Но можете ли вы взглянуть на строки linkedin.py, чтобы увидеть, что он пытается сделать, и какова плохая ценность в этот момент?
  • 0
    Да, я использую примеры и все изменения, которые я внес, он ввел мой номер и ключ и выбрал другой порт: PORT = 8080 LINKEDIN_API_KEY = '' # мой ключ LINKEDIN_API_SECRET = '' # мой секрет. Код linkedin.py добавлен в вопрос
Теги:
oauth-2.0
linkedin-api

1 ответ

0

Значение этой записи

'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())
  • 0
    Нет, после внесения изменений работает с теми же результатами
  • 0
    Является ли любое из других значений чем-то еще, кроме строки?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню