API LiveID не работает - отсутствует токен
Я пытаюсь получить некоторую информацию из API LiveID, но получаю сообщение об ошибке:
The provided request does not include an access token. An access token is
required in order to request this resource.
код относительно прост; Я включаю библиотеку, вызываю инициализатор с nameidentifier
претензии я получаю от WIF и затем запрашиваю мне путь.
из сообщения об ошибке, я полагаю, я не смог предоставить токен доступа... но разве мое приложение не получило бы его уже после того, как я успешно получил заявку?
вот мой код:
<script src="https://js.live.net/v5.0/wl.js" type="text/javascript"></script>
<script type="text/javascript">
WL.init({ client_id: 'O0UpnnhoiFljBJAtTxhVliu4qtbUWoEVxdgfK7SBR+M=' });
WL.api({ path: "me", method: "GET" }, function (response) {
// response.error.message
});
* Обновить *
мне пришло в голову, возможно, мне нужно войти в систему, так что теперь у меня есть:
WL.init({ client_id: 'O0UpnnhoiFljBJAtTxhVliu4qtbUWoEVxdgfK7SBR+M=' });
WL.login();
WL.api({ path: "me", method: "GET" }, function (response) {
но та же ошибка...
1 ответ
Так что это было немного сложнее... очевидно, нужно создать приложение с системой LiveID по адресу:
https://manage.dev.live.com/
сайт дает вам ClientID, а затем код должен быть таким:
<script src="https://js.live.net/v5.0/wl.js" type="text/javascript"></script>
<script type="text/javascript">
WL.init({ client_id: '#YOUR-CLIENT-ID-HERE#' });
WL.login({ scope: ["wl.signin"] });
WL.api({ path: "me", method: "GET" }, function (response) {
alert(response.first_name + ' ' + response.last_name);
});
Интересно, что ekkis, в который я вошел, так как везде нигде не появляется, и сейчас я в замешательстве, но я думаю, что использовал учетную запись Passport, думая, что это учетная запись LiveID. Я не уверен, что понимаю разницу, но теперь, когда я настроил свою учетную запись LiveID на имя / фамилию, все это работает.
Последнее замечание: для создания приложения на сайте live.com необходимо указать URL-адрес возврата. когда WL.login()
При вызове браузера появляется окно, запрашивающее у пользователя разрешения (даже если он / она уже вошел в систему). Когда пользователь нажимает Ok, возвращаемый URL-адрес загружается в это окно. grr... так что теперь у вас должна быть специальная страница, все, что она делает, это закрывает окно (если кто-то здесь не может подсказать, как это должно работать).
* Обновить *
то, что я хотел, было кровавым электронным письмом (я могу получить это от всех других IP-адресов). так что для этого:
WL.login({ scope: ["wl.signin", "wl.emails"] });
а потом:
WL.api({ path: "me", method: "GET" }, function (response) {
$('#Auth .SignedIn').html(response.emails.account);
});
который получит адрес электронной почты, связанный с учетной записью. есть другие доступные электронные письма, см.: http://msdn.microsoft.com/en-us/library/hh243648.aspx