PDA

Просмотр полной версии : [Помогите!] C# авторизация в контакте.


maksy
26.07.2011, 19:48
Помогите написать код для авторизации в контакте и добавления сообшения на стену.
Авторизация: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;

namespace VK_Auth
{
public partial class Form1 : Form
{
string sid;
Cookie cook;
public Form1()
{
InitializeComponent();
f2 = new Form2();
label1.Text = "Email:";
label1.Font = new Font(label1.Font.FontFamily, 12, FontStyle.Bold);
label2.Text = "Password:";
label2.Font = new Font(label2.Font.FontFamily,12, FontStyle.Bold);
button1.Text = "Login";
}
Form2 f2;
private void button1_Click(object sender, EventArgs e)
{
//создаем запрос
[Ссылки могут видеть только зарегистрированные и активированные пользователи] wrGETURL = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])System.Net.WebRequest.Create("[Ссылки могут видеть только зарегистрированные и активированные пользователи]" + textBox1.Text + "&pass=" + textBox2.Text);
//выставляем значения Headers
//Запрещаем редирект
wrGETURL.AllowAutoRedirect = false;
//Выставляем таймаут
wrGETURL.Timeout = 100000;
//получаем Headers,пришедшие в ответе
string headers = wrGETURL.GetResponse().Headers.ToString();
//получаем весь ответ
[Ссылки могут видеть только зарегистрированные и активированные пользователи] my[Ссылки могут видеть только зарегистрированные и активированные пользователи] = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])wrGETURL.GetResponse();
//записываем ответ в поток
StreamReader myStreamReadermy = new StreamReader(my[Ссылки могут видеть только зарегистрированные и активированные пользователи]() , Encoding.GetEncoding(1251));
//запихиваем ответ в строку
string page = myStreamReadermy.ReadToEnd();
//это регулярное выражение,которое выдирает из переменной headers(а ее мы получили выше) значение sid
Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
Match ssid = sidregex.Match(headers);
sid = ssid.Groups[1].Value;
//инициализируем куки
cook = new Cookie("remixsid", sid);
//тоже самое,куки пишем
cook.Domain = "vkontakte.ru";
//проверяем,получили ли мы нужную переменную в куки
if (String.IsNullOrEmpty(sid))
MessageBox.Show("Чето не получается авторизироваться");
else
f2.Show();
}
}
}

А вот добавление сообщения не могу написать,на форме 2 есть кнопка и поле для ввода при нажатии на кнопку должно отправляться сообщение: пример пользователю id которого написан в поле для ввода.
Тут также надо использовать cookie как их использовать в программе описано здесь ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Помогите пожалуйста, просто я в post запросах не разбираюсь:nono:
P.S не надо мне писать как да что делать просто напишите код и если можно коменты.

Hermein
26.07.2011, 23:40
Помогите написать код для авторизации в контакте и добавления сообшения на стену.
Авторизация: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;

namespace VK_Auth
{
public partial class Form1 : Form
{
string sid;
Cookie cook;
public Form1()
{
InitializeComponent();
f2 = new Form2();
label1.Text = "Email:";
label1.Font = new Font(label1.Font.FontFamily, 12, FontStyle.Bold);
label2.Text = "Password:";
label2.Font = new Font(label2.Font.FontFamily,12, FontStyle.Bold);
button1.Text = "Login";
}
Form2 f2;
private void button1_Click(object sender, EventArgs e)
{
//создаем запрос
[Ссылки могут видеть только зарегистрированные и активированные пользователи] wrGETURL = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])System.Net.WebRequest.Create("[Ссылки могут видеть только зарегистрированные и активированные пользователи]" + textBox1.Text + "&pass=" + textBox2.Text);
//выставляем значения Headers
//Запрещаем редирект
wrGETURL.AllowAutoRedirect = false;
//Выставляем таймаут
wrGETURL.Timeout = 100000;
//получаем Headers,пришедшие в ответе
string headers = wrGETURL.GetResponse().Headers.ToString();
//получаем весь ответ
[Ссылки могут видеть только зарегистрированные и активированные пользователи] my[Ссылки могут видеть только зарегистрированные и активированные пользователи] = ([Ссылки могут видеть только зарегистрированные и активированные пользователи])wrGETURL.GetResponse();
//записываем ответ в поток
StreamReader myStreamReadermy = new StreamReader(my[Ссылки могут видеть только зарегистрированные и активированные пользователи]() , Encoding.GetEncoding(1251));
//запихиваем ответ в строку
string page = myStreamReadermy.ReadToEnd();
//это регулярное выражение,которое выдирает из переменной headers(а ее мы получили выше) значение sid
Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
Match ssid = sidregex.Match(headers);
sid = ssid.Groups[1].Value;
//инициализируем куки
cook = new Cookie("remixsid", sid);
//тоже самое,куки пишем
cook.Domain = "vkontakte.ru";
//проверяем,получили ли мы нужную переменную в куки
if (String.IsNullOrEmpty(sid))
MessageBox.Show("Чето не получается авторизироваться");
else
f2.Show();
}
}
}

А вот добавление сообщения не могу написать,на форме 2 есть кнопка и поле для ввода при нажатии на кнопку должно отправляться сообщение: пример пользователю id которого написан в поле для ввода.
Тут также надо использовать cookie как их использовать в программе описано здесь ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Помогите пожалуйста, просто я в post запросах не разбираюсь:nono:
P.S не надо мне писать как да что делать просто напишите код и если можно коменты.

ну:
во-первых это не ты написал, а взял готовый код Черино.
во-вторых учи основы
в-третьих ты вообще не разбираешься, а не в пост-запросах /problem

maksy
27.07.2011, 16:19
ну:
во-первых это не ты написал, а взял готовый код Черино.
во-вторых учи основы
в-третьих ты вообще не разбираешься, а не в пост-запросах /problem
Знаете что:
1. Я не писал что код мой,я его взял отсюда ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
2. Я знаю основы
3. Я хорошо знаю GET запросы и разбираюсь в C#
4. И не надо тут хамить.

maksy
27.07.2011, 17:35
Дай ссылку попробую сделать
Вот ([Ссылки могут видеть только зарегистрированные и активированные пользователи] 1%86%D0%B8%D1%8F-%D0%92%D0%9A%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D 0%B5.2/) но только я тут сам переделывал,просто он auth_key вытаскивает из игр.




P.S походу я неправильно сформулировал тему,мне нужно вытащить переменные из 1 формы в другую)

StabiliZator
27.07.2011, 18:00
напиши мне в скайп StabiliZator9
я те исходник кину там посмотришь как делать!

Hermein
28.07.2011, 01:16
я же писал как печеньки во вторую форму передать..

Дак уже много раз писали, но если человек не понимает элементарных основ это бесполезно, и, кстати довольно плохой способ передач печенек(нашел на форуме кучу минусов этого способа) лучше через program.cs передавать ;)

итак в program.cs пишем:
static class Program
{public static string ololo = "";

в форм1:

private void button1_Click(object sender, EventArgs e)
{
Program.ololo = "ololotrololo";
Form2 form2 = new Form2();
form2.Show();
}
в форм2:
private void Form2_Load(object sender, EventArgs e)
{
MessageBox.Show(Program.ololo);
}

тоже не очень хороший способ(создание лишних переменных) но все же лучше
Еще существует способ открытия новой формы как дочерней, как следствие из 2 формы имеем доступ ко всем переменным, самый лучший способ, паблик-кода нет, свой приватный, не дам /problem

Cherinho
28.07.2011, 03:02
Hermein, хороший способ)
а вообще ведь способов передачи данных между формами много.то уже на любителя,или в зависимости от поставленной задачи :)

Hermein
28.07.2011, 12:57
Hermein, хороший способ)
а вообще ведь способов передачи данных между формами много.то уже на любителя,или в зависимости от поставленной задачи :)

Пример у тебя 3 формы - при открытии 3 закрываем форм 2 и с 3 форм2 не открыть уже - так как с формы 3 печеньки передавать тоже надо.
Способов много но 1 всего не имеет минусов - это при открытии форм как дочерних, через програм - то что только статический поля, 2 минус-замедляют скорость работы.

maksy
28.07.2011, 16:53
Дак уже много раз писали, но если человек не понимает элементарных основ это бесполезно, и, кстати довольно плохой способ передач печенек(нашел на форуме кучу минусов этого способа) лучше через program.cs передавать ;)

итак в program.cs пишем:
static class Program
{public static string ololo = "";

в форм1:

private void button1_Click(object sender, EventArgs e)
{
Program.ololo = "ololotrololo";
Form2 form2 = new Form2();
form2.Show();
}
в форм2:
private void Form2_Load(object sender, EventArgs e)
{
MessageBox.Show(Program.ololo);
}

тоже не очень хороший способ(создание лишних переменных) но все же лучше
Еще существует способ открытия новой формы как дочерней, как следствие из 2 формы имеем доступ ко всем переменным, самый лучший способ, паблик-кода нет, свой приватный, не дам /problem

Вот с public'ом я не мог разобраться.

Добавлено через 4 часа 34 минуты
Я нупь...оказалось зря я вас мучал проблема не в кукисах и не в программе,а просто в хеше контакта,всем спасибо))