【发布时间】:2017-10-08 09:38:34
【问题描述】:
我无法获取沙盒环境的访问令牌。 我按照本指南进行身份验证:OAuth
因此,当我按照本指南创建请求时,我会从 api 获得以下响应:
{"error":"access_denied","error_description":"Invalid application credentials."}
我按照说明使用 mf 客户端 ID 和密码的密钥作为我的客户端密码。
这是我使用的代码:
public static void main(String[] args) {
try {
URL url = new URL("https://www.dwolla.com/oauth/v2/token");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("client_id", "<Key>");
conn.setRequestProperty("client_secret", "<Secret>");
conn.setRequestProperty("grant_type", "client_credentials");
conn.setDoInput(true);
conn.setDoOutput(true);
System.out.println("Message:" + conn.getResponseMessage());
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException ex) {
Logger.getLogger(PaymentTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(PaymentTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
【问题讨论】:
-
您是否在测试代码的最后一小时内生成了令牌? token-generator doc 表示短期访问令牌在生成一小时后过期。
-
另外,请注意不要在公开帖子上发布 API 私钥/秘密。
-
这些是沙盒中的密钥,但以防万一我删除了它们。好的,我现在很困惑,当您进入 dwolla 仪表板时生成的令牌是我的客户机密吗?在仪表板上,我有一个“钥匙”和一个“秘密”。和一个让我生成令牌的按钮。我一直使用“Key”作为我的客户 ID。和“秘密”作为我的客户秘密
-
是的,听起来不错,"Overview - Obtaining an application access token" 文档,在
"Request application authorization"和"Request parameters"下提到了相同的client_id和client_secret。我没有使用 Dwolla API,但授权流程与任何其他 API 相同,并遵循The OAuth 2.0 Authorization Framework's Steps to Authorization Code Grant。 -
您使用的那些凭据,如果它们来自沙盒,可能需要指向“沙盒 API 主机”:
https://api-sandbox.dwolla.com。我使用您包含的相同凭据运行您的代码,并获得了与您相同的"error",这表明我们应该使用共享的 Sandox API 端点进行测试。如果我可以让沙盒访问为我工作,我会回复。
标签: java json http http-headers dwolla