Python rauth подключение к linkedin

Недавно я взял на себя поддержку приложения, которое использует rauth для подключения к linkedin. Код, который терпит неудачу:

    self.linkedin= OAuth1Service(                                                     
        name='linkedin',                                                          
        consumer_key=self._consumer_key,                                              
        consumer_secret=self._consumer_secret,                                       
        request_token_url=self.request_token_url,      
        access_token_url=self.access_token_url,        
        authorize_url=self.authorize_url)          

    self.request_token, self.request_token_secret = \
                        self.linkedin.get_request_token(method='GET',
                        oauth_callback=self.callback_url)

Владелец приложения говорит, что раньше это работало, но теперь мы получаем:

TypeError: request() получил неожиданный аргумент ключевого слова 'oauth_callback'

Можете ли вы указать мне некоторые документы / примеры, которые помогут мне перестроить это?

-Джим

1 ответ

Похоже, вы используете более позднюю версию rauth, чем оригинал. Вам нужно будет изменить код, чтобы он соответствовал изменениям в rauth API. В основном они небольшие, что отчасти связано с переходом на Requests v1.0.0, в котором было много критических изменений в его API.

Вы должны прочитать руководство по обновлению. Кроме того, есть ряд рабочих примеров.

Наконец, эта конкретная ошибка указывает на то, что был передан неожиданный параметр, а именно oauth_callback, Это потому, что rauth - просто оболочка для запросов. Запросы не знает, что делать с oauth_callback, Вместо этого вы должны использовать собственный API запросов и передать его, в данном случае, через params параметр, например:

linkedin = OAuth1Service(name='linkedin',                                                          
                         consumer_key=consumer_key,                                              
                         consumer_secret=consumer_secret,                                       
                         request_token_url=request_token_url,      
                         access_token_url=access_token_url,        
                         authorize_url=authorize_url)          

request_token, request_token_secret = \
    linkedin.get_request_token(method='GET',
                               params={'oauth_callback': callback_url})

Надеюсь, это поможет!

Другие вопросы по тегам