0

我想将我的 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()
4

1 回答 1

1

我有几个建议给你:

  1. 如果您想使用 Python 连接到 Asana API,我强烈推荐我们的客户端库
  2. 您尝试加载的页面是供人类使用的。您的应用程序应将人引导至浏览器中的该页面。他们将取回可以粘贴到您的应用程序中的令牌。有关更多详细信息,请参阅我们的 OAuth 文档
  3. 如果您决定继续使用这种方法,您需要做几件事来解决您在urllib2. 首先,您的查询参数应该在问号之后。其次,您需要使用 URL 对它们进行编码urllib.urlencode(然后您不需要将&s 包含在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)
    
于 2016-07-12T12:44:44.613 回答