Как связать odoo с асаной?

Я хочу соединить мой odoo с проектом асаны. но он отображает HTTPError: HTTP Error 400: Bad Requesterror.

def execute(self, cr, uid, ids, context=None):
    params = {
        'client_id': '142025919&',
        'client_secret': '9691f60a6ca68&',
        'redirect_uri': 'urn:ief:wg:oauth:2.0:oob&',
        'state' :'somerandmstate'
    }
    headers = {"Content-type": "application/x-www-form-urlencoded"}
    req = urllib2.Request('https://app.asana.com/-/oauth_authorize%s?'%params)

    _logger.info(req)
    content = urllib2.urlopen(req, timeout=TIMEOUT).read()

1 ответ

Решение

У меня есть пара рекомендаций для вас:

  1. Если вы хотите подключиться к Asana API с помощью Python, я настоятельно рекомендую нашу клиентскую библиотеку.
  2. Страница, которую вы пытаетесь загрузить, предназначена для использования человеком. Ваше приложение должно направлять человека на эту страницу в браузере. Они вернут токен, который можно вставить в ваше приложение. Смотрите нашу документацию OAuth для более подробной информации.
  3. Если вы решили продолжить использовать этот подход, вам нужно сделать несколько вещей, чтобы исправить ваш запрос для работы в urllib2, Во-первых, параметры вашего запроса должны идти после знака вопроса. Во-вторых, вам нужно URL кодировать их, используя urllib.urlencode (и тогда вам не нужно включать &в params толковый словарь). Например

    params = urllib.urlencode({
        'client_id': 'someID',
        'client_secret': 'someSecret',
        'redirect_uri': 'urn:ief:wg:oauth:2.0:oob',
        'state': 'somerandmstate'
    })
    req = urllib2.Request('https://app.asana.com/-/oauth_authorize?%s'%params)
    
Другие вопросы по тегам