【问题标题】:Getting access token for paypal rest api grails获取贝宝 rest api grails 的访问令牌
【发布时间】:2015-08-03 11:27:12
【问题描述】:

如何在 grails 中使用 paypal rest api

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
  -d "grant_type=client_credentials"

文档:https://developer.paypal.com/webapps/developer/docs/integration/mobile/verify-mobile-payment/

我需要在 grails 中获取身份验证令牌。它在终端中运行没有任何问题。

我正在尝试使用 HttpClient 来实现它,但是如何传递用户凭据。在上面的例子中用-u uname:pass 指定HttpClient.?

【问题讨论】:

  • 有没有理由不用官方的java rest-api-sdk

标签: grails curl paypal oauth httpclient


【解决方案1】:

您似乎正在使用 Basic Auth 进行身份验证(请参阅 how to set basic auth in curlthe client's section for Basic Auth in the Wikipedia)

Apache 的 Http 客户端为您提供身份验证处理,但在这种情况下,手动创建标头似乎更容易:

Request addBasicAuthHeader(String username, String password) {
   return addBasicAuthHeader(createBasicAuth(username, password))
}

Request addBasicAuthHeader(String headerValue) {
   request.addHeader("Authorization", "Basic ${headerValue}")
   return request
}

private String createBasicAuthHeader(String username, password) {
   "$username:$password".toString().bytes.encodeBase64()
}

您可以调用任何addBasicAuthHeader 方法(可能使它们适应您正在使用的HttpClient 的风格),允许您从其原始值添加基本身份验证标头(您在curl 中拥有的内容) s -u 标志)或来自一对用户名和密码。

【讨论】:

  • 我添加了几个链接来说明我的假设以及如何计算基本身份验证标头。我不确定如何详细说明,特别是没有任何代码来自您的评论。
  • 感谢您的快速回复,我会尝试您的代码:)
猜你喜欢
  • 2013-10-17
  • 2011-02-20
  • 2013-12-01
  • 2021-11-10
  • 1970-01-01
  • 2021-05-11
  • 2018-02-01
  • 2014-11-20
  • 2013-04-03
相关资源
最近更新 更多