locked
WebAuthenticationResult RRS feed

  • Вопрос

  • const string vkUrl = "https://oauth.vk.com/authorize?" +                "client_id=" + clientId                "&scope=photos&" +                "redirect_uri=http://oauth.vk.com/blank.html&" +                "display=popup& " +                "v=5.0& " +                "response_type=token";            var requestUri = new Uri(vkUrl);            var callbackUri = new Uri("http://oauth.vk.com/blank.html");            WebAuthenticationResult webAuthResult = await WebAuthenticationBroker.AuthenticateAsync(                                                    WebAuthenticationOptions.None,                                                    requestUri,                                                    callbackUri);            if (webAuthResult.ResponseStatus == WebAuthenticationStatus.Success)            {}
    Этот код должен вернуть access token с сайта vk, приходит положительный результат, но строка ответа почему то обрывается на 18ом символе этого самого accesstoken, я точно не знаю его длинну но определённно длиннее, плюс после него должно быть ещё пару параметров. Вабще не могу представить с чем это может быть связанно.

    С уважением, Герасимов Алексей. Skype: gerich1988; icq: 352-885-953

    6 октября 2013 г. 9:49

Ответы

  • попробуйте вот так. Все должно получиться

    ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
    
    Uri requestUri = new Uri("https://oauth.vk.com/authorize?client_id=3810789&scope=notify,friends,photos,audio,video,notes,status,wall,groups,messages,notifications&redirect_uri=https://oauth.vk.com/blank.html&display=popup&v=5.0&response_type=token");
                Uri callbackUri = new Uri("http://oauth.vk.com/blank.html");
    
                WebAuthenticationResult webAuthResult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri, callbackUri);
    
                if (webAuthResult.ResponseStatus == WebAuthenticationStatus.Success)
                {
                    var responseString = webAuthResult.ResponseData;
                    string[] responseContent = responseString.Split('=', '&');
    
                    localSettings.Values["access_token"] = responseContent[1]; // сохранили полученный токен
                    localSettings.Values["time_expiried"] = DateTime.Now.AddSeconds(Double.Parse(responseContent[3])).ToString(); // запомнил время после которого токен будет недействителен
                    localSettings.Values["user_id"] = Int32.Parse(responseContent[5]); // сохранили id пользователя
                    return true;
                }

    7 октября 2013 г. 12:23
  • На самом деле проблема была во мне, я после копипаста забыл удалить пробелы после пары "&". Без пробелов всё хорошо.

    С уважением, Герасимов Алексей. Skype: gerich1988; icq: 352-885-953

    • Помечено в качестве ответа starostin1988 9 октября 2013 г. 11:09
    9 октября 2013 г. 11:09

Все ответы

  • попробуйте вот так. Все должно получиться

    ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
    
    Uri requestUri = new Uri("https://oauth.vk.com/authorize?client_id=3810789&scope=notify,friends,photos,audio,video,notes,status,wall,groups,messages,notifications&redirect_uri=https://oauth.vk.com/blank.html&display=popup&v=5.0&response_type=token");
                Uri callbackUri = new Uri("http://oauth.vk.com/blank.html");
    
                WebAuthenticationResult webAuthResult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri, callbackUri);
    
                if (webAuthResult.ResponseStatus == WebAuthenticationStatus.Success)
                {
                    var responseString = webAuthResult.ResponseData;
                    string[] responseContent = responseString.Split('=', '&');
    
                    localSettings.Values["access_token"] = responseContent[1]; // сохранили полученный токен
                    localSettings.Values["time_expiried"] = DateTime.Now.AddSeconds(Double.Parse(responseContent[3])).ToString(); // запомнил время после которого токен будет недействителен
                    localSettings.Values["user_id"] = Int32.Parse(responseContent[5]); // сохранили id пользователя
                    return true;
                }

    7 октября 2013 г. 12:23
  • На самом деле проблема была во мне, я после копипаста забыл удалить пробелы после пары "&". Без пробелов всё хорошо.

    С уважением, Герасимов Алексей. Skype: gerich1988; icq: 352-885-953

    • Помечено в качестве ответа starostin1988 9 октября 2013 г. 11:09
    9 октября 2013 г. 11:09