Как связать 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 ответ
Решение
У меня есть пара рекомендаций для вас:
- Если вы хотите подключиться к Asana API с помощью Python, я настоятельно рекомендую нашу клиентскую библиотеку.
- Страница, которую вы пытаетесь загрузить, предназначена для использования человеком. Ваше приложение должно направлять человека на эту страницу в браузере. Они вернут токен, который можно вставить в ваше приложение. Смотрите нашу документацию OAuth для более подробной информации.
Если вы решили продолжить использовать этот подход, вам нужно сделать несколько вещей, чтобы исправить ваш запрос для работы в
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)