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

Другие вопросы по тегам