ФорумСообществоПрофессиональная деятельностьВзаимопомощь → Ищу OAuth + OpenID + vkontakte

Ищу OAuth + OpenID + vkontakte

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 28 июня 2010 г. 11:40, спустя 36 минут 51 секунду

    Я так это вижу: таблица users описывает учетку НА ЭТОМ СЕРВЕРЕ + таблица externals для внешних. Отношение один-ко-многим. если пользователь впервые зарегался по внешнему id, то его users.password содержит хеш случайного пароля, который никому неизвестен, но служит только для генерации правильной куки.

    Если учетка уже есть, а юзер хочет добавить внешний авторизационный сервис, то сначала ему надо авторизоваться по-старому, затем  перейти к добавлению сервиса.
    ιιlllιlllι унц-унц
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 11 августа 2010 г. 2:46, спустя 43 дня 15 часов 5 минут

    Написал кто нить?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 декабря 2010 г. 21:28, спустя 127 дней 19 часов 42 минуты

    есть че?)
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 16 декабря 2010 г. 21:57, спустя 29 минут 1 секунду

    ну заюзайте логинзу что ли уже
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 декабря 2010 г. 22:02, спустя 5 минут 14 секунд

    хочется именно красивое и гибкое ООПешное решение
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 16 декабря 2010 г. 22:04, спустя 1 минуту 35 секунд

    ну если нет и писать не хочется и писать никто не хочет, то что уж делать остается)))
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 17 декабря 2010 г. 1:12, спустя 3 часа 8 минут 12 секунд

    Хуй вам а не OpenID, контакт банит всех направо и налево за просто так, делал я как-то на одном из своих сайтов опен ид авторизацию через контакт, решение у меня есть но показывать вам его боюсь (вам такой говнокод в кошмарном сне не приснится), так вот - авторизация просуществовала ровно 4 дня, потом при попытке авторизоваться просто вылезала табличка HOST BANNED, причину так и не услышал, так что имхо всякие логинзы проще юзать чем напрямую с этими упырями работать, это вам не фейсбук!
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 17 декабря 2010 г. 2:14, спустя 1 час 1 минуту 39 секунд

    ну если курлом аутентификацию делать - то ясен хуй примут меры)
    а я через АПИ прикрутил для одной халтуры. Тьфу-тьфу уже месяц работает, все норм
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 17 декабря 2010 г. 2:35, спустя 21 минуту 37 секунд


    ну если курлом аутентификацию делать - то ясен хуй примут меры)
    а я через АПИ прикрутил для одной халтуры. Тьфу-тьфу уже месяц работает, все норм


    какая разница курлом или сокетами?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 17 декабря 2010 г. 2:52, спустя 16 минут 48 секунд

    я имел в виду если делать не через официальное апи
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 17 декабря 2010 г. 11:23, спустя 8 часов 31 минуту 5 секунд

    оно только для JS же, и как ты будешь принимать данные на сервер? по js? это не безопасно - можно подменить же
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 17 декабря 2010 г. 13:44, спустя 2 часа 20 минут 57 секунд

    да ну. Есть там и сервер-сервер взаимодействие

    <?php

    class VkApi
    {
    protected $appSecret;
    protected $appId;
    protected $apiUrl;

    public function __construct($appId, $appSecret, $url = 'api.vk.com/api.php')
    {
    $this->appId = $appId;
    $this->appSecret = $appSecret;
    if (!strstr($url, 'http://')) {
    $url = 'http://'.$url;
    }
    $this->apiUrl = $url;
    }

    public function api($method, array $params = array())
    {
    $params['api_id'] = $this->appId;
    $params['v'] = '3.0';
    $params['method'] = $method;
    $params['timestamp'] = time();
    $params['format'] = 'json';
    $params['random'] = rand(0,10000);
    ksort($params);

    $sig = '';
    foreach($params as $k=>$v) {
    $sig .= $k.'='.$v;
    }
    $sig .= $this->appSecret;
    $params['sig'] = md5($sig);

    $query = $this->apiUrl . '?' . $this->paramsToString($params);
    $res = file_get_contents($query);

    return json_decode($res, true);
    }

    protected function paramsToString($params)
    {
    //TODO: http_build_str?
    $pice = array();
    foreach($params as $k => $v) {
    $pice[] = $k . '=' . urlencode($v);
    }

    return implode('&', $pice);
    }

    public function isAuth()
    {
    if (!isset($_COOKIE["vk_app_{$this->appId}"]))
    return false;

    $vkCookie = $_COOKIE["vk_app_{$this->appId}"];

    if (!empty($vkCookie)) {
    $data = array();

    foreach (explode('&', $vkCookie) as $item) {
    list($key, $value) = explode('=', $item);
    $data[$key] = $value;
    }

    // Проверяем sig
    $string = sprintf("expire=%smid=%ssecret=%ssid=%s%s", $data['expire'], $data['mid'], $data['secret'], $data['sid'], $this->appSecret);

    if (md5($string) == $data['sig']) {
    // sig не подделан - возвращаем ID пользователя ВКонтакте.
    return $data['mid'];
    }
    }

    return false;
    }

    }
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 13 марта 2011 г. 15:19, спустя 86 дней 1 час 34 минуты


    Нужна надежная библиотека/класс авторизации везде. Чтобы без лишних зависимостей. Если больше 500 строк — ну его нах.
    vkontakte добавил не потому, что люблю эту гадость, а просто реально очень много людей там и глупо игнорировать этот факт.


    какбе предлагаю поучаствовать http://pyha.ru/forum/topic/6230.0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!