Я пытаюсь получить доступ к Microsoft LiveConnect из Java webapp. И у меня проблема с получением жетонов.Microsoft Live Connect, REST Access Issue
Проблема заключается в следующем: Я последовал грант код авторизации расхода, как указано в http://msdn.microsoft.com/en-us/library/live/hh243647.aspx#authcodegrant
LiveConnect ли перенаправить пользовательский агент (браузер) к серверу с URL следующего формата
http://contoso.com/Callback.htm?code=AUTHORIZATION_CODE
тогда мой веб-приложение выдает REST (запрос POST) в LiveConnect в следующем формате
POST https://login.live.com/oauth20_token.srf
Content-type: application/x-www-form-urlencoded
client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&client_secret=CLIENT_SECRET&code=AUTHORIZATION_CODE&grant_type=authorization_code
Вместо возвращении некоторых значимых данных, LiveConnect возвращать HTML-страница содержит некоторую ненужную информацию, как этого
<html>
...
<body class="modern" onLoad="BodyLoad()">
<div class="header" id="i0272"><span>Microsoft account</span></div>
<div class="content">
<div style="padding:15px 0 0 0;font-size:1px;"> </div>
<h1 class="css0046">We're unable to complete your request</h1>
<p class="css0005">Microsoft account is experiencing technical problems. Please try again later.</p></div>
Я также размещать здесь код Java, который включает в себя с REST API
URL urlConnection = new URL(this.url);
HttpURLConnection connection = (HttpURLConnection) urlConnection.openConnection();
OutputStream outputStream = null;
try {
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setReadTimeout(DEFAULT_READ_TIMEOUT_IN_MS);
connection.setUseCaches(false);
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", "" + data.getBytes("UTF-8").length);
for(String key : params.keySet()){
connection.setRequestProperty(key, params.get(key));
}
executed.set(true);
connection.connect();
outputStream = connection.getOutputStream();
//outputStream.write("\r\n".getBytes("UTF-8"));
outputStream.write(data.getBytes("UTF-8"));
outputStream.flush();
httpInputStream = connection.getResponseCode() != HTTP_OK ?
connection.getErrorStream() :
connection.getInputStream();
return new Response(connection.getResponseCode(), Utils.fromInputStream(httpInputStream));