none
oauth 2.0 Live авторизация RRS feed

  • Вопрос

  • Добрый день. asp mvc 4. Добавил Live авторизацию. (взял за основу пример mvc 4 internet application). Она работает. Оттуда берутся фамилия и имя. Но как получить токен авторизации?
    29 января 2013 г. 9:24

Ответы

  • В респонсе запроса логина возвращается токен, правда из описание можно сделать вывод что токен тот же, что вы и передает в запрос, но попробуйте использовать его в других запросах, должно получиться.

    Для связи [mail]

    • Помечено в качестве ответа Petriaev Viacheslav 1 февраля 2013 г. 6:38
    30 января 2013 г. 10:14
    Модератор
  • Добрый день.  В общем решил сделать авторизацию самому. Но есть вопрос. 

    При инициализации страницы вызываю метод Login

    public ActionResult Index()
            {
                // получаем из базы данных всю информацию о кредитах
                var allCredits = _db.Credits.ToList<Credit>();
                // Созадем объект Credits и передаем его всю информацию
                ViewBag.Credits = allCredits;
                // Возвращаем представление
                Login();
                return View();
            }


    public void Login()
            {
                var uri = "https://login.live.com/oauth20_authorize.srf";
                var authorizeUri = new StringBuilder(uri);
                authorizeUri.AppendFormat("?client_id={0}&", "xxxxxxxxx");
                authorizeUri.AppendFormat("scope={0}&", "wl.signin");
                authorizeUri.AppendFormat("response_type={0}&", "token");
                authorizeUri.AppendFormat("redirect_uri={0}", Url.Encode("http://forgoodstest.azurewebsites.net/Home/Loginpost"));
    
            }


    client_id замазал)

    Как перенаправить пользователя на страницу с authorizeUri?

    Пробовал так 

    var startInfo = new ProcessStartInfo();
    startInfo.FileName = authorizeUri.ToString();
    Process.Start(startInfo);

    Но это работает только в Debug. При отправке сайта на сервер Azure он не открывается. 

    главное в ответе будет нужный токен

    [HttpPost]
            public string Loginpost()
            {
                access_token = Request.Params["access_token"];
                authentication_token = Request.Params["authentication_token"];
                token_type = Request.Params["token_type"];
                expires_in = Int32.Parse(Request.Params["expires_in"]);
                scope = Request.Params["scope"];
                ViewBag.Token = temp;
                temp = "access_token " + access_token + " authentication_token " + authentication_token + " token_type " + token_type + " expires_in " + expires_in + " scope "+scope;
                return temp;
                
            }

    Заранее спасибо


    1 февраля 2013 г. 6:21
  • Забыл, что у Вас MVC, используйте это тогда.
    • Помечено в качестве ответа Petriaev Viacheslav 1 февраля 2013 г. 6:38
    1 февраля 2013 г. 6:34
    Модератор

Все ответы

  • Что Вы подразумеваете под "токеном" в данном случае?
    29 января 2013 г. 9:50
    Модератор
  • который отправляется каждый раз с запросом, подтверждая, что пользователь вошел. 

    Нужен для работы с http://msdn.microsoft.com/en-us/library/windowsazure/jj710108.aspx 

    Пункт логин. Дальше как понял, дадут дадут уже другой токен

    29 января 2013 г. 9:53
  • В респонсе запроса логина возвращается токен, правда из описание можно сделать вывод что токен тот же, что вы и передает в запрос, но попробуйте использовать его в других запросах, должно получиться.

    Для связи [mail]

    • Помечено в качестве ответа Petriaev Viacheslav 1 февраля 2013 г. 6:38
    30 января 2013 г. 10:14
    Модератор
  • спасибо. Но меня и интересует как получить токен авторизации Live. Так как пока мне нечего отправить. Авторизация сделана стандартным методом. Раскоментировал строки службы МС и вписал id и секрет. И она работает. Но токена я не вижу( Он скорее всего приходит на сайт, но как его брать, я не знаю

    30 января 2013 г. 10:22
  • Добрый день.  В общем решил сделать авторизацию самому. Но есть вопрос. 

    При инициализации страницы вызываю метод Login

    public ActionResult Index()
            {
                // получаем из базы данных всю информацию о кредитах
                var allCredits = _db.Credits.ToList<Credit>();
                // Созадем объект Credits и передаем его всю информацию
                ViewBag.Credits = allCredits;
                // Возвращаем представление
                Login();
                return View();
            }


    public void Login()
            {
                var uri = "https://login.live.com/oauth20_authorize.srf";
                var authorizeUri = new StringBuilder(uri);
                authorizeUri.AppendFormat("?client_id={0}&", "xxxxxxxxx");
                authorizeUri.AppendFormat("scope={0}&", "wl.signin");
                authorizeUri.AppendFormat("response_type={0}&", "token");
                authorizeUri.AppendFormat("redirect_uri={0}", Url.Encode("http://forgoodstest.azurewebsites.net/Home/Loginpost"));
    
            }


    client_id замазал)

    Как перенаправить пользователя на страницу с authorizeUri?

    Пробовал так 

    var startInfo = new ProcessStartInfo();
    startInfo.FileName = authorizeUri.ToString();
    Process.Start(startInfo);

    Но это работает только в Debug. При отправке сайта на сервер Azure он не открывается. 

    главное в ответе будет нужный токен

    [HttpPost]
            public string Loginpost()
            {
                access_token = Request.Params["access_token"];
                authentication_token = Request.Params["authentication_token"];
                token_type = Request.Params["token_type"];
                expires_in = Int32.Parse(Request.Params["expires_in"]);
                scope = Request.Params["scope"];
                ViewBag.Token = temp;
                temp = "access_token " + access_token + " authentication_token " + authentication_token + " token_type " + token_type + " expires_in " + expires_in + " scope "+scope;
                return temp;
                
            }

    Заранее спасибо


    1 февраля 2013 г. 6:21
  • "Как перенаправить пользователя на страницу с authorizeUri?" - Response.Redirect().
    1 февраля 2013 г. 6:30
    Модератор
  • Забыл, что у Вас MVC, используйте это тогда.
    • Помечено в качестве ответа Petriaev Viacheslav 1 февраля 2013 г. 6:38
    1 февраля 2013 г. 6:34
    Модератор