LiveID API失败 - 缺少令牌

时间:2011-07-25 00:53:08

标签: claims-based-identity wif windows-live-id liveid

我正在尝试从LiveID API中检索一些信息,但我收到错误:

The provided request does not include an access token. An access token is
required in order to request this resource.

代码相对简单;我包含了该库,使用来自WIF的nameidentifier声明调用初始化者,然后请求 me 路径。

从错误消息我猜测我没有提供访问令牌......但是自从我成功检索到索赔后,我的应用程序是否已经有了这个?

这是我的代码:

<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 个答案:

答案 0 :(得分: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()被调用时,浏览器会弹出一个窗口,请求用户输入权限(即使他/她已经登录)。当用户单击“确定”时,返回的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#user