0

我正在使用 GTMOAuth-2 库向 Asana API 实施 OAuth 2 授权代码授予流程,但始终返回服务器错误 500。GTMHTTPFetcher 日志如下(选择性编辑):

fetch tokens for app.asana.com

2013-05-08 16:46:58 +0000
Request: POST https://app.asana.com/-/oauth_authorize
Request headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: gtm-oauth2 <user-agent>

Request body: (199 bytes)
client_id=<client-id>&client_secret=_snip_&code=<client-secret>&grant_type=authorization_code&redirect_uri=http%3A%2F%2Fwww.google.com%2FOAuthCallback

Response: status 500
Response headers:
Cache-Control: no-store
Content-Length: 303
Content-Type: text/html; charset=UTF-8
Date: Wed, 08 May 2013 16:46:56 GMT
Pragma: no-cache
Server: nginx
Set-Cookie: <cookie>
X-Asana-Content-String-Length: 303
X-Asana-Preferred-Release-Revision: 20130508_073846_310cafc985fd5fb43121784b58d5dcd2503ffffe

Response body: (303 bytes)
<html>
<head>
<title>Error</title><script>__FILE__="(none)";var config = {
"CLUSTER": "prod",
"PRETTY_JS_CODEGEN": false,
"ENABLED_FEATURES": ""
};</script><link rel="shortcut icon" href="/-/static/luna/browser/images/favicon.ico" />

</head>
<body>
<h3>Error</h3><pre>Server Error</pre>
</body>
</html>

我已经仔细检查了身份验证和令牌 URL、客户端 ID 和机密,确保重定向 URI 在 Asana 和应用内匹配。有趣的是,授权流程似乎已经对应用程序进行了授权(并且 Asana 网站将应用程序记录为已授权),但它似乎永远不会返回授权令牌。有什么地方我可能会出错,或者这真的是内部服务器错误吗?

4

1 回答 1

0

(我在 Asana 工作)。我不确定这个请求是在流程中的哪个位置发出的,但它看起来不正确。一旦你获得了授权代码(通过让用户与 Asana 表单交互),库应该向我们的/-/oauth_token端点发出请求,并将代码传递给我们。因此,您可能只需要使用/-/oauth_token端点而不是/-/oauth_authorize端点。

如果您查看我们的OAuth 示例,您会注意到有两个不同的 URL,一个用于授权,一个用于令牌交换。

Asana 可能会返回 500,因为它没有预料到这一点,而且我们在解决问题方面做得不够好。

于 2013-05-08T20:51:59.620 回答