За последние 24 часа нас посетили 55629 программистов и 1706 роботов. Сейчас ищет 1051 программист ...

Авторизация через Вконтакт

Тема в разделе "Прочие вопросы по PHP", создана пользователем masterlelik, 25 окт 2012.

  1. masterlelik

    masterlelik Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    68
    Симпатии:
    0
    Вопрос немного не стандартный и этим на мой взгляд не прост. И. возможно, не совсем касается ПХП,

    Параллельно подключал на двух сайта авторизацию через соц. сеть вконтакте.
    Код кнопки
    <a href="http://api.vkontakte.ru/oauth/authorize?client_id=ХХХХХХ&scope=&redirect_uri=http://site.ru/page.php&response_type=code"><img src=""></a>

    Получение информации

    $url = "https://api.vkontakte.ru/oauth/access_token?client_id=".$vk_app_id."&client_secret=".$vk_app_shared_secret."&code=".$_REQUEST["code"];
    $response = json_decode(@file_get_contents($url));

    Так вот, для первого сайта приложение в ВК было создано уже года назад здесь: http://vk.com/editapp?act=create
    Для второго сайта приложение создал вчера.
    Первый сайт все хорошо авторизирует, а на втором переменная $response остается пустой, но если я на втором сайте прописываю в $vk_app_id и $vk_app_shared_secret, а также в коде кнопки client_id данные из первого приложения, и меняю адрес сайта в самом приложении на второй сайт, то все работает.
    Пробовал создавать приложение и как веб-сайт и как Desktop приложение не помогает.

    В чем же может быть проблема?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Возможно, раньше контакт был не против http и давно зарегистрированные приложения по-прежнему работают с сайтами по протоколу http, а новые - только https?

    Это так, просто предположение...
     
  3. masterlelik

    masterlelik Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    68
    Симпатии:
    0
    Оба приложения работают по https, менял только ID и ключ.
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Эм... Я сделал так:

    Выдрал форму и генератор, все и входи на здоровье =)
    Через js шли, пост и все туда запихивай и все, и выводи себе на страницу =)
     
  5. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Вконтакте вроде бы нужно регистрировать приложение, именно на определенный сайт. Если это сделано, и ID и ключ введен верный, то все должно работать. В любом случае должен возвращать что то. Если ничего не возврашает, то возможно просто до этого места не доходит
     
  6. masterlelik

    masterlelik Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    68
    Симпатии:
    0
    to Your - это один из вариантов, я же использую Oauth.

    to jenya777777 - так и сделал, зарегистрировал на этот сайт 2 приложения, для одного вначале выбрал пункт web-сайт, для второго stand-alone приложение. Не работают оба варианта. До места получения $responce дело доходит, я вижу url, который шлю в вконтакт.
    И в вопросе написал, если в более старом приложении созданном для другого сайта поменять линки на второй сайт, и взять там ID и ключ, то все замечательно авторизируется. Т.е. код рабочий, все функции отрабатывают.
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    В вашем случае, так вообще просто пробить вход, обратясь с запросом и парсить.
    Чем нагораживать там приложения с разными адресами.

    Вывести в div полученный результат.)

    Используйте новый домен и все, в чем проблема?
    Или напишите в месте отправки запроса, переименовать старый в новый, функцией замены.
     
  8. masterlelik

    masterlelik Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    68
    Симпатии:
    0
    Нашел ответ на эту задачу для новых приложений надо добавлять еще одну переменную

    $url = "https://api.vkontakte.ru/oauth/access_token?client_id=".$vk_app_id."&client_secret=".$vk_app_shared_secret."&code=".$_REQUEST["code"]."&redirect_uri=".$redirect_uri;

    Странно, конечно, когда тут играем, а тут нет. Т.е. для старых приложений не надо, а для новых надо.
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну я о том и писал - что-то изменилось вконтакте. Только я подумал, что это связано с протоколом, но суть в том что да - они добавили какое-то новое правило для сайтов-приложений, но чтобы не заставлять всех переделывать то, что уже сделано - это новое правило распрастранилось только на новые приложения. А старые работают по старой схеме.