2015-08-03 68 views
0

獲得訪問令牌如何使用Grails中貝寶REST API的Grails

貝寶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" 

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

我需要在Grails的認證令牌。它在終端工作沒有任何問題。

我試圖用HttpClient來實現,但是如何傳遞用戶憑證。在上面的例子中指定-u uname:passHttpClient

+0

有沒有原因不使用官方java rest-api-sdk – user190117

回答

1

看來你正在使用基本認證驗證(見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-u標誌)或來自一對用戶名和密碼。

+0

我添加了幾個鏈接來說明我的假設以及如何計算基本auth頭。我不確定如何精心設計更多,特別是沒有任何代碼可供您評論。 – Deigote

+0

感謝您的快速響應,我會嘗試您的代碼:) –