Я хочу получить токен доступа OAuth 2.0 из REST API через Java код, дело в том, что мне удалось успешно получить его обратно с сервера с Скрипт Bash (команда curl)
Скрипт Bash (работает):
#!/usr/bin/env bash
# Base URL of TeamForge site.
site_url="https://teamforge.example.com"
# TeamForge authentication credentials.
username="foo"
password="bar"
# Requested scope (all)
scope="urn:ctf:services:ctf
curl -d "grant_type=password&client_id=api-client&scope=$scope&username=$username&password=$password" $site_url/sf/auth/token
С этим фрагментом кода я получаю следующий ответ:
{
"access_token": "eyJraWQiOiIxIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJhZG1pbiIsImF1ZCI...",
"token_type": "Bearer"
}
Когда я пытался перевести его на Java код, используя Unirest :
HttpResponse<JsonNode> jsonResponse = Unirest.post("\"https://teamforge.example.com/sf/auth/token")
.header("accept", "application/json")
.body("{\"grant_type\":\"password\"," +
"\"client_id\":\"api-client\", " +
"\"scope\":\"urn:ctf:services:ctf\"," +
"\"username\":\"foo\"," +
"\"password\":\"bar\"}")
.asJson();
System.out.println(jsonResponse.getBody());
Ответ был:
{"error_description":"Invalid grant","error":"invalid_grant"}
После нескольких исследований и попыток я все еще не знаю, что мне не хватает в моем запросе кода Java.Может ли кто-нибудь помочь мне добавить недостающий материал или направить меня в правильном направлении?
Документы CollabNet:
Saso