Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сервис постинга коментариев ВК 
V
    Опции темы
BeeMaster
Дата 14.6.2014, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



Здравствуйте. Хочу сделать для своих подписчиков вконтакте возможность комментировать записи анонимно.

Нужно сделать следующее:

1) У нас есть пост со ссылкой http://site.ru/?group=72914078&post=7. Человек кликает по ней и переходит на наш сайт.
2) Далее предлагается авторизоваться через вконтакте с помощью http://vk.com/dev/auth_sites
3) Человек авторизуется и мы получаем его id страницы
4) Далее с помощью api проверяем состоит ли он в группе public10639516. https://api.vk.com/method/groups.isMember?g...ess_token=***** . Если состоит, то идем дальше. Если нет, то выдавать сообщение "Вы не состоите в группе http://vk.com/public10639516"
(Токен у нас был приготовлен заранее от анонимной страницы)
5) Открывается страницы. На ней текстовое поле и кнопка.
6) Человек заполняет и нажимает. Далее с помощью api делается запрос  https://api.vk.com/method/wall.addComment?o...amp;text=привет
(Токен у нас был приготовлен заранее от анонимной страницы)
7) В ответ контакт выдает {"response":{"cid":8}}. 
8) Сайт выдает человеку надпись "Ваш комментарий опубликован http://vk.com/wall-72914078_7?reply=8"


Токен от анонимной страницы мы получаем тут https://oauth.vk.com/oauth/authorize?client....com/blank.html

Может быть это и не сложно реализовать, но я вообще лох и не понимаю как это все сделать... Если допустим с отправкой комментария я на 50% разобрался, то с остальным я даже представления не имею :(

Сразу предупреждаю, что я от php знаю 0.00001%. Я не представляю как это все работает и тем более не понимаю...

Вот так я отправляю комментарий
Код

<?php
$text=""; if (isset($_GET['text'])) $text=$_GET['text'];
$captcha_sid=""; if (isset($_GET['captcha_sid'])) $captcha_sid=$_GET['captcha_sid'];
$captcha_key=""; if (isset($_GET['captcha_key'])) $captcha_key=$_GET['captcha_key'];

$send = curl_init('https://api.vk.com/method/wall.addComment?owner_id=-72914078&post_id=1&access_token=***
&text='.$text.'&captcha_sid='.$captcha_sid.'&captcha_key='.$captcha_key); 
curl_setopt($send, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($send);
curl_close($send);
echo $result;
exit;
?>


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

Это сообщение отредактировал(а) BeeMaster - 14.6.2014, 08:17
PM MAIL   Вверх
BeeMaster
Дата 16.6.2014, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



Никто не знает?
Реально очень нужна помощь...
PM MAIL   Вверх
Sanchezzz
Дата 17.6.2014, 01:16 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Делал когда то для себя...
Код

<?php
/**
 * Класс для работы с VK API
 * @usage
 * <pre>
 * $vk = new VK(array(
 *   'app_id' =>  '',
 *   'app_key' => '',
 *   'api_url' => 'api.vk.com/api.php'
 * ));
 * $result = $vk->api(<method> , <params> );
 * </pre>
 **/

class VK {

    protected
        $app_key,
        $app_id,
        $app_redirect_url,
        $api_url;

    /**
     * Инициализация задаем настройки
     * @param array $config
     *  app_id    Апп ID
     *  app_key   Ключ ID
     *  api_url   Url на api
     *
     **/
    public function __construct($config) {
        $this->app_id = $config['app_id'];
        $this->app_key = $config['app_key'];
        $this->app_redirect_url = $config['redirect_url'];
        $api_url = !isset($config['api_url']) ? 'api.vk.com/api.php' : $config['api_url'];
        if (!strstr($api_url, 'http://')) $api_url = 'http://'.$api_url;
        $this->api_url = $api_url;
    }

    /**
     * Метод посылает запрос на VK
     * @param  string $method   имя метода в api
     * @param  array  $params   массив параметров которые нужно передать в api
     * @return array
     **/
    public function api( $method , $params= array() )
    {
        $params['api_id']    = $this->app_id;
       // $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->app_key;
        $params['sig'] = md5($sig);
        $query = $this->api_url . '?' . $this->params($params);


        $res = file_get_contents($query);
        return json_decode($res, true);
    }

    /**
     * Создает query строку параметров PS^ http_build_query для вк не прокатывает (
     * @param array $params массив параметров
     * @return string
     **/
    protected function params($params)
    {
        $pice = array();
        foreach($params as $k=>$v)
        {
            $pice[] = $k . '=' . urlencode($v);
        }
        return implode('&' , $pice);
    }

    /**
     * Получаем данные пользователя
     * @param  integer $user_id
     * @param  string $access_token  Токен от доступа к пользователю
     * @return  array|false  Возвращаем данные о пользователе или false;
     **/
    public function getProfile($user_id, $access_token){
        $fealds = 'uid,first_name,last_name,nickname,screen_name,sex,bdate,city,country,timezone,photo'.
                  ',photo_medium,photo_big,has_mobile,rate,contacts,education,online,counters';

        /*
           $response = json_decode(file_get_contents('https://api.vk.com/method/getProfiles?uids='.$user_id .
          '&access_token='. $access_token . '&fields=' . $fealds, true));
           return $response;
        */
        return $this->api('getProfiles',array(
            'uids'         => $user_id,
            'fealds'       => $fealds,
            'access_token' => $access_token,
        ));

    }


    public function http($url){
        $ci = curl_init();
        /* Curl settings */
        curl_setopt($ci, CURLOPT_USERAGENT, 'dev-php');
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ci, CURLOPT_TIMEOUT, 20);
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false );
        curl_setopt($ci, CURLOPT_HEADER, false);
        curl_setopt($ci, CURLOPT_URL, $url);
        $response = curl_exec($ci);
        curl_close($ci);
        return $response;
    }



    /**
     * Получить по коду access_token
     * @param  string $code секретный код от пользователя...
     * @return  array|false  получаем данные в виде массива или false
     **/
    public function getAccessToken($code){
        $response = json_decode($this->http('https://api.vk.com/oauth/access_token?client_id=' . $this->app_id .
        '&client_secret=' . $this->app_key . '&code=' . $code . '&redirect_uri='.  urldecode($this->app_redirect_url)   ),true);
        return $response;
    }


    public function getAppId(){
        return $this->app_id;
    }

}


Авторизация делаем для пользователя ссылку.
Код

'http://api.vk.com/oauth/authorize?client_id=' . $config['vk']['app_id'] .
            '&response_type=code'. 
            '&scope=offline'.
            '&redirect_uri=' . urldecode('URL куда отправить пользователя при success')

Дальше ловим на этой странице куда нас отправили $_GET['code']
Код

if(isset($_GET['code']))
{
$vk = new VK($config);
$fragment = $vk->getAccessToken($_GET['code']);
if (isset($fragment['error']))
{
        // echo $fragment['error_description'];
        // redirect
        // exit;
}
 if (isset($fragment['access_token']) && isset($fragment['user_id']))
 {
    // Инфа о пользователи который авторизовался.
    $fields = "uid,first_name,last_name,nickname,screen_name,sex,bdate,city,country,timezone,photo," .
                            "photo_medium,photo_big,has_mobile,rate,contacts,education,online,counters";

     $data = $vk->api('users.get', [
         'user_ids' => $fragment['user_id'],
         'fields' => $fields,
         'access_token' => $fragment['access_token'],
         'name_case' => 'nom'
      ]);
    //


  }
}


Ну дальше сами телодвижения сделаете куда надо.

Код

 $data = $vk->api('groups.isMember', [
         'user_id' => $fragment['user_id'],
         'group_id=' => 10639516,
         'access_token' => $fragment['access_token']
      ]);


У вас должен быть пользователь зарезанный как обычный пользователь от которого будут идти посты и который будет добавляться во все группы+ нужно будет сделать вечный токен для такого пользователя.





--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
BeeMaster
Дата 22.6.2014, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



Спасибо большое. Сейчас будем реализовывать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0775 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.