我正在开发一个与Windows API通信的应用程序。我正在使用 oAuth 2.0 进行相同的操作。
完整的代码仅使用 JS/HTML5 完成。但是我面临一个问题,
每当我请求访问令牌时,它都会打开一个新窗口,其中包含我的重定向 URL 附加了访问令牌和其他参数。但是令牌不会发送回我的代码。我必须手动复制代码,因此它违背了我的应用程序的目的。有什么办法,当我单击按钮(调用我的 oAuth 调用)时,会出现一个新的弹出窗口,并使用访问令牌重定向回我调用的 url?
这是我到目前为止所做的:
var APPLICATION_CLIENT_ID = 'SOME_NUMBERS',
REDIRECT_URL = "http://www.myweb.com";
WL.Event.subscribe("auth.login", onLogin);
WL.init({
client_id: APPLICATION_CLIENT_ID,
redirect_uri: REDIRECT_URL,
scope: 'wl.skydrive_update',
response_type: "token"
});
WL.ui({
name: "signin",
element: "signInButton",
brand: "hotmail",
type: "connect"
});
function greetUser(session) {
var strGreeting = "";
WL.api(
{
path: "me",
method: "GET"
},
function (response) {
if (!response.error) {
strGreeting = "Hi, " + response.first_name + "!"
document.getElementById("greeting").innerHTML = strGreeting;
}
});
}
function onLogin() {
var session = WL.getSession();
if (session) {
greetUser(session);
}
}
var tokenAuth = //Adding Manually//
var apiURL = "https://apis.live.net/v5.0/me/";
var tokenAuthParam = "?access_token=" + tokenAuth;
这就是我被困住的地方。任何人都可以帮忙。另外,greet用户功能不起作用。我希望它仅使用 js/html 作为客户端工作。`
不确定您要尝试使用令牌身份验证做什么。 得到了这个工作,这应该可以帮助您解决问候部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>JScript Win 8 example</title>
<!-- WinJS references -->
<link href="//Microsoft.WinJS.1.0.RC/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0.RC/js/base.js"></script>
<script src="//Microsoft.WinJS.1.0.RC/js/ui.js"></script>
<script type="text/javascript" src="/LiveSDKHTML/js/wl.js"></script>
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/default.js"></script>
</head>
<body>
<div id="signin"></div>
<br />
<label id="infoLabel"></label>
<br />
id: <label id="id"></label><br />
firstname: <label id="first_name"></label><br />
lastname: <label id="last_name"></label><br />
fullname: <label id="name"></label><br />
gender: <label id="gender"></label><br />
locale: <label id="locale"></label><br />
<script>
WL.Event.subscribe("auth.login", onLogin);
WL.init({
scope: "wl.signin",
});
WL.ui({
name: "signin",
element: "signin"
});
function onLogin(session) {
var session = WL.getSession();
if (session.error) {
document.getElementById("infoLabel").innerText = "Error signing in: " + session.error;
}
else {
document.getElementById("infoLabel").innerText = "Signed in.";
WL.api(
"/me", "GET",
function (response) {
if (!response.error) {
document.getElementById("id").innerText = response.id;
document.getElementById("first_name").innerText = response.first_name;
document.getElementById("last_name").innerText = response.last_name;
document.getElementById("name").innerText = response.name;
document.getElementById("gender").innerText = response.gender;
document.getElementById("locale").innerText = response.locale
}
else {
document.getElementById("infoLabel").innerText = "API call failed: " + JSON.stringify(response.error).replace(/,/g, "n");
}
}
);
}
}
</script>
</body>
</html>