如何从重定向窗口中检索 oAuth Accees 令牌



我正在开发一个与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>

相关内容

  • 没有找到相关文章

最新更新