如何用体式连接odoo?

时间:2016-06-08 11:09:24

标签: openerp asana-api asana-connect

我想将我的odoo与asana项目联系起来。 但它显示 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 个答案:

答案 0 :(得分:1)

我有几条建议:

  1. 如果您想使用Python连接Asana API,我强烈推荐我们的client library
  2. 您尝试加载的页面供人类使用。您的应用应该在浏览器中将人指向该页面。他们将获得可以粘贴到您的应用程序中的令牌。有关详细信息,请参阅our OAuth documentation
  3. 如果您决定继续使用此方法,则需要执行以下操作来修复您在urllib2中工作的请求。首先,您的查询参数应该在问号之后。其次,您需要使用urllib.urlencode对它们进行URL编码(然后您不需要在&字典中包含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)