2012-08-10 3 views
1

Je travaille sur une application où je communique avec l'API Windows. J'utilise oAuth 2.0 pour la même chose.Comment récupérer le jeton Acces OAuth de la fenêtre de redirection

Le code complet a été fait en utilisant JS/HTML5 seulement. Cependant, je suis confronté à un problème,

chaque fois que je demande un jeton d'accès, il ouvre une nouvelle fenêtre avec mon URL de redirection ajoutée avec un jeton d'accès et d'autres paramètres. Mais le jeton n'est pas renvoyé à mon code. Je dois copier manuellement le code et ainsi il va à l'encontre du but de mon application. Est-il possible, quand je clique sur le bouton (qui appelle mon appel oAuth), une nouvelle fenêtre pop-up apparaît et redirige vers mon URL appelée avec jeton d'accès?

ici est ce que je l'ai fait jusqu'à présent:

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; 

Et c'est là où je suis coincé. Quelqu'un peut-il aider? Aussi la fonction greetUser ne fonctionne pas. Je veux que cela fonctionne en tant que client seulement en utilisant js/html seulement. `

Répondre

0

Vous ne savez pas exactement ce que vous essayez de faire avec l'unité TokenAuth. Vous avez ce travail qui devrait vous aider avec la partie de salutation:

<!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> 
+0

Monsieur, avez-vous oublié quelque chose dans le code, je ne suis pas capable d'exécuter cela. quel événement vous utilisez pour invoquer l'oauth – CodeMonkey

+1

Cela fonctionne comme c'est de mon côté. Quel message d'erreur obtenez-vous? Avez-vous configuré les paramètres de votre application selon https://manage.dev.live.com/build?wa=wsignin1.0 Ce site Web contient de bons détails étape par étape http://stephenwalther.com/archive/2012/07/ 13/metro-authentification-et-le-asp-net-web-api.aspx –

Questions connexes