ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Open Api vkontakte и авторизация на своем сайте
  #1  
Старый 06.05.2010, 19:58
Аватар для Grienders2
Grienders2
Новичок
Регистрация: 05.05.2010
Сообщений: 4
Провел на форуме:
8967

Репутация: 5
По умолчанию Open Api vkontakte и авторизация на своем сайте

Я делаю авторизацию у себя на сайте через Open Api vkontakte. У меня есть тестовое приложение, оно - не iфрейм, и флэш, оно создано только для тестирования возможности авторизация через вконтакт у меня на сайте - http://vkontakte.ru/app1862027_51966464.

На сайте на странице логина как и положено: App_Init, окошко для авторизации и т.д.

Код HTML:
<div id="vk_api_transport"></div>
<div id="vk_login_button" onclick="loginUser()"></div>
<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript" charset="windows-1251"></script>


<script type="text/javascript">
    VK.init({
        apiId: 1862027,
        nameTransportPath: "/xd_receiver.html"
    });

    VK.UI.button('vk_login_button');


    function vk_login() {
        VK.Auth.login(vk_login_callback);
        return false;
    }

    function vk_login_callback(response) {
        if (response.status == "connected") {
            getInitData();
        }
    };


    function getInitData() {
        var code;
        code = 'return {'
        code += 'me: API.getProfiles({uids: API.getVariable({key: 1280}),  fields: "photo"})[0]';
        code += '};';
        VK.Api.call('execute', { 'code': code }, onGetInitData);
    }
    function onGetInitData(data) {
        var r;
        if (data.response) {
            // alert('da1');
            r = data.response;
            if (r.me) {
                
                 
                
                document.write(r.me.first_name + ' ' + r.me.last_name + '<br/><a href="http://vkontakte.ru/id' + r.me.uid + '"><img width="50" height ="50" src="' + r.me.photo + '"/>');


            }
        } else {
            alert('no');
        }
    }

    function loginUser() {
        vk_login();
        onGetInitData();
    }
</script>
Вот только не пойму: если мне нужно будет получить ну например данные пользователя (API.getProfiles()) уже авторизованного пользователя не из html страницы, а из кода asp.net (или php, не важно), то есть на серверной стороне то как мне это сделать?

Вот пример, который возвращает ошибку 5 - пользователь не авторизован или 4 - неправильная подпись. Сделан в виде консольного приложения

Код:
public  class MyVkTester 
{
    public Random rnd = new Random();
    
    public string MD5(string instr)
    {
        string strHash = string.Empty;

        foreach (byte b in new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(instr)))
        {
            strHash += b.ToString("x2").ToLower();
        }
        return strHash;
    }
    public int UnixTime()
    {
        TimeSpan ts;
        ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0));
        return (int)ts.TotalSeconds;
    }
    public string SendRequest()
    {
        string apiid = 
            "?????";
             
        string userid = "51966464";

        string appSecureKey = 
            "?????????????????";
        
        string version = "2.0";

        int time = UnixTime();
        int unique = rnd.Next(50000);
        string sig = MD5("api_id="+apiid + "method=getGroupsrandom=" +
            unique  +"test_mode=1"+"timestamp=" + time + "v=2.0"  + appSecureKey);

        string xml = @"http://api.vkontakte.ru/api.php?api_id=" + apiid +  "&method=getGroups&random="  + unique + "&test_mode=1" + "&timestamp=" + time  + "&sig=" + sig;
        return xml;

    }
}

 class Program
    {
        static void Main(string[] args)
        {
            MyVkTester test = new MyVkTester();
            string a =test.SendRequest();

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(a);

            req.Method = "GET";
           
            var response = (HttpWebResponse)req.GetResponse();

            using (var stream = new StreamReader(response.GetResponseStream()))
            {
                var result = stream.ReadToEnd();
                Console.WriteLine(result);
           }

        }
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получу доступ к нужному вам e-mail'у или анкете crackmail О Работе 288 04.06.2010 23:33
Программы для сайта Вконтакте. Fruit Социальные сети 3 05.01.2010 22:59
Методы API Вконтакте SoulReaver Социальные сети 0 12.08.2009 15:46
В обход прокси на работе и дома $p01nt Чужие Статьи 0 29.11.2008 13:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ