using System using System Collections Generic using System ComponentMo

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.dll;
using System.Collections.Specialized;
using System.Linq;
namespace VKPlayer
{
public partial class Form2 : Form
{
private enum VkontakteScopeList
{
/// <summary>
/// Пользователь разрешил отправлять ему уведомления.
/// </summary>
notify = 1,
/// <summary>
/// Доступ к друзьям.
/// </summary>
friends = 2,
/// <summary>
/// Доступ к фотографиям.
/// </summary>
photos = 4,
/// <summary>
/// Доступ к аудиозаписям.
/// </summary>
audio = 8,
/// <summary>
/// Доступ к видеозаписям.
/// </summary>
video = 16,
/// <summary>
/// Доступ к предложениям (устаревшие методы).
/// </summary>
offers = 32,
/// <summary>
/// Доступ к вопросам (устаревшие методы).
/// </summary>
questions = 64,
/// <summary>
/// Доступ к wiki-страницам.
/// </summary>
pages = 128,
/// <summary>
/// Добавление ссылки на приложение в меню слева.
/// </summary>
link = 256,
/// <summary>
/// Доступ заметкам пользователя.
/// </summary>
notes = 2048,
/// <summary>
/// (для Standalone-приложений) Доступ к расширенным методам работы с сообщениями.
/// </summary>
messages = 4096,
/// <summary>
/// Доступ к обычным и расширенным методам работы со стеной.
/// </summary>
wall = 8192,
/// <summary>
/// Доступ к документам пользователя.
/// </summary>
docs = 131072
}
private int appid = 4379093;
private int scope = (int)(VkontakteScopeList.audio);
public Form2()
{
InitializeComponent();
}
private void btnSignIn_Click(object sender, EventArgs e)
{
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(String.Format("http://api.vkontakte.ru/oauth/authorize?client_id={0}&scope={1}&display=wap&response_type=token", appId, scope));
HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
StreamReader myStream = new StreamReader(myResp.GetResponseStream(), Encoding.UTF8);
string html = myStream.ReadToEnd();
Regex myReg = new Regex("<form(.*?)>(?<form_body>.*?)</form>", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);
if (!myReg.IsMatch(html) || (html = myReg.Match(html).Groups["form_body"].Value) == "")
{
MessageBox.Show("Ошибка получения данных с сервера. Попробуйте позднее.");
return;
}
myReg = new Regex("<input(.*?)name=\"(?<name>[^\x22]+)\"(.*?)((value=\"(?<value>[^\x22]*)\"(.*?))|(.?))>", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);
NameValueCollection qs = new NameValueCollection();
foreach (Match m in myReg.Matches(html))
{
string val = m.Groups["value"].Value;
if (m.Groups["name"].Value == "email")
{
val = tbLogin.Text;
}
else if (m.Groups["name"].Value == "pass")
{
val = tbPassword.Text;
}
qs.Add(m.Groups["name"].Value, HttpUtility.UrlEncode(val));
}
}
}
}