Невозможно опубликовать с Python API, состояние входа в систему - KeyError: "name = 'loggedin', domain = None, path = None" - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь использовать этот python api-wrapper , чтобы оставить комментарий на minds.com.

Hoverver, похоже, он не отправляет комментарий и ошибки:(Я до сих пор не знаю, как публиковать здесь стековые трассы, но у меня есть это здесь вместо https://paste.pound -python.org / show / pV9iHbAyBB1mxfw2zoGD / ).

Я уверен, чтоКажется, я вошел в систему, потому что он показывает мои учетные данные пользователя в ответе json после входа в систему при запуске minds_api.con.cookies.Вот как выглядят файлы cookie при входе в систему через API (я просто изменил некоторые значения, чтобы быть уверенным):

<RequestsCookieJar[Cookie(version=0, name='socket_jwt', value='eyJ0eXAiOiJKV1QiLCJhbGdiOiJIUzI1NiJ9.eyJndWlkIjoiNjE4NDUZu4g5NDgwMjA1IiwiZXhwaXJlcyI6MUIQLEU5NCwic2VlKDiVuDVmNTUzYmY3OTEyMzk2YTQyMGE5ZTkxMWI3NTlhMjNkZmQ0MzA2ZGRiNzI1MjgwZjgzODk5MTlhMzlkOGQ2ZTVjN2M0ZWFlZThjYjExZjFiYNkzUPZWVmYTYxNDZiOWI5MGNlMzQ2YTJiM2FkNhafdNDAzMjk5NGVmOTAzYzMifQ.iEkw_KnxCuB9AXh2nrYKjtT9tfOT8PDsit-bgAG7pVQ', port=None, port_specified=False, domain='.minds.com', domain_specified=True, domain_initial_dot=False, path='/', path_specified=True, secure=True, expires=1544640594, discard=False, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False), Cookie(version=0, name='XSRF-TOKEN', value='6ebd8e04de96p55df0ee5939a6db6562dd358b1420ef4eb34dhfgg311d7596f45f5371d34588937cb38e5652f6df783a9f74f69da5b263c4b66fba6', port=None, port_specified=False, domain='www.minds.com', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=True, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False), Cookie(version=0, name='minds_sess', value='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiIsImp0aSI7IKPhtBnRqJmNzkxMjM5NmE0MjBhOWU5MTFiNzU5YTIzZGZkNDMwNmRkYjcyNTI4MGY4Mzg5OTE5YTM5ZDhkNmU1YzdjNGVhZWU4Y2IxMWYxYmM3YTI2YWVlZmE2MTQ2YjliOTBjZTM0NmEyYjNhYjQ4MDQwMzI5OTRlZjkwM2MzIn0.eyJqdGkiOiI4NWY1NTNiZjc5MTIzOTZhNDIwYTllOTExYjc1OWEyM2RmZDQzMDZkZGI3MjUyODBmODM4OTkxOWEzOWQ4ZDZlNWM3YzRlYWVlOGNiMTFmMWJjN2EyNmFlZWZhNjE0NmI5YjkwY2UzNDZhMmIzYWI0ODA0MDMyOTk0ZWY5MDNjMyIsImV4cCI6MTU0NzIyODk5NCwidXNlcl9ndWlkIjoiNjE4NDU3NDI5Mjg5NDgwMjA1In0.l1KMPobfarC00mLdxyUKmqHenRMkyepvB0VEAUjPwqm7kzFXtskTzMNkxEH3dTfZ0_p_Oqlx4sYq5FfDe_1Wwi3V2ZZoiUbdpAyw6qmZnEozmkWBHuMKT0ZishnUEa5HPn9keMjdAxKFfyGVjbU7AQ0QFt4pcluzXbSauwlhOtvS28FWz7pzyrNUgiuVoBRWPwfVUQwnryBJLGxYNrDd3wlFxCujG8E4ynlCHgAWzVTuFzy5YT2UhsbCOQgAK2Pd3RGumezPg3njSvNN968H1Od2vYCCmcx7xnEnjVJjgG-JY9zkULmge54D5Va_Ne5tJlxHznH1DKVmf0ThSHGnM3g', port=None, port_specified=False, domain='www.minds.com', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=True, expires=1547228994, discard=False, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>

Этот код отвечает за ошибку:
/minds / utils.py

from functools import wraps
from urllib.parse import quote, urlparse

from minds.exceptions import AuthenticationError

(...)
def requires_auth(func):
    """Decorator for that checks whether loggedin cookie is present in the current session"""

    @wraps(func)
    def new_func(self, *args, **kwargs):
        if not self.con.cookies['loggedin'] == '1':
            raise AuthenticationError(
                f'{type(self).__name__}.{func.__name__} requires authentication, call "authenticate" method first or provide username password kwars upon object creation')
        return func(self, *args, **kwargs)

    return new_func

/ minds / section / posting.py

from minds.utils import requires_auth
from minds.endpoints import *


class PostingAPI:
    def _post_comment(self, guid, message, wire_treshold=None, is_rich=0, title='', description='',
                      thumbnail='', url='', attachment_guid=None, mature=0, access_id=2) -> dict:
        body = {k: v for k, v in locals().items() if k != 'self'}
        resp = self.con.post(COMMENT_URLF(guid), json=body)
        return resp.json()

(...)

    @requires_auth
    def post_newsfeed(self, message, attached_url='', mature=False, **kwargs) -> dict:
        """Post something to user's newsfeed.

        :param message: text message of post content
        :param attached_url: urls that should be attached to the post
        :param mature: whether post should be marked mature or not

        .. note:: requires auth
        """
       return self._post_newsfeed(message=message, url=attached_url, mature=int(mature), **kwargs)

Есть ли способ устранить ошибку, чтобы опубликовать

1 Ответ

0 голосов
/ 13 декабря 2018

Хорошо, это ваш второй выпуск :).Сайт сильно изменился, поэтому эта библиотека устарела.loggedin пропал, и вы больше не увидите этот параметр в файлах cookie, и вам придется изменить его на if not self.con.cookies.get("minds_sess").

def requires_auth(func):
    """Decorator for that checks whether loggedin cookie is present in the current session"""

    @wraps(func)
    def new_func(self, *args, **kwargs):
        if not self.con.cookies.get("minds_sess"):
            raise AuthenticationError(
                f'{type(self).__name__}.{func.__name__} requires authentication, call "authenticate" method first or provide username password kwars upon object creation')
        return func(self, *args, **kwargs)

    return new_func
...