programmis/php-vk-api-sdk

2.0.48 2017-05-19 14:39 UTC

README

支持

账户,广告,应用,音频,认证,公告板,数据库,文档,收藏,好友,礼物,群组,线索,点赞,市场,消息,新闻源,笔记,通知,订单,页面,照片,地点,投票,搜索,安全,统计,状态,存储,用户,工具,视频,墙,小部件

如何安装

1) 下载 composer

php -r "copy('https://getcomposer.org.cn/installer', 'composer-setup.php');" 
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

2) 安装 SDK

php composer.phar require programmis/php-vk-api-sdk

3) 获取 vkontakte 令牌

http://oauth.vk.com/authorize?client_id=3682744&scope=status,friends,wall,offline,photos,market&redirect_uri=http://oauth.vk.com/blank.html&display=page&response_type=token 
in the address bar:
https://oauth.vk.com/blank.html#access_token=345345345345345345345345345d73e7de6acf1475ca460d&expires_in=0&user_id=1

示例

上传照片

$server = new PhotosGetUploadServer($token);
$server->setAlbumId($album_id)
    ->setGroupId($group_id);
if (!$server->doRequest()) {
    return;
}
if (!$server->upload([$img_path])) {
    return;
}
$uploadResult = $server->getUploadResult();
$photos = new PhotosSave($token);
$photos->setAlbumId($album_id)
    ->setGroupId($group_id)
    ->setServer($uploadResult->getServer())
    ->setPhotosList($uploadResult->getPhotosList())
    ->setHash($uploadResult->getHash())
    ->setCaption($text);
if (!$photos->doRequest()) {
    return;
}

获取 VKontakte 用户详细信息

$users = \VkApi\Vk::users()->get()
    ->addUserId(1)
    ->addField('sex')
    ->execute();
foreach ($users as $uI) {
    echo $uI->getId() . "\n";
    echo $uI->getFirstName() . "\n";
    echo $uI->getLastName() . "\n";
    echo $uI->getSex() . "\n";
}
//OR
$user = new \VkSdk\Users\UsersGet();
$user->setUserIds([1])
    ->addField('sex');
if($user->doRequest()){
    foreach($user->getUsersInfo() as $uI ){
        echo $uI->getId() . "\n";
        echo $uI->getFirstName() . "\n";
        echo $uI->getLastName() . "\n";
        echo $uI->getSex() . "\n";
    }
}

加入这个群组或参加 VKontakte 的会议

$joinGroup = new GroupsJoin();
$joinGroup->setGroupId(1);
if( $joinGroup->doRequest()){
    echo $joinGroup->getResponse();
}

在 VKontakte 墙上放置记录

$wallPost = new WallPost();
$wallPost->setOwnerId(1)
    ->setMessage("test");
if($wallPost->doRequest()){
    echo $wallPost->getPostId();
}

在 VKontakte 创建新相册

$album = new PhotosCreateAlbum();
$album->setTitle("My new test album");
if($album->doRequest()){
    echo $album->getAlbumInfo()->getId();
}

将 VKontakte 用户添加为好友

$friendsAdd = new FriendsAdd();
$friendsAdd->setUserId(1)
    ->setText("Add me please");
if($friendsAdd->doRequest()){
    switch($friendsAdd->getResponse()){
        case FriendsAdd::RESULT_SEND:
        case FriendsAdd::RESULT_ACCEPT:
        case FriendsAdd::RESULT_REPEAT:
            echo "OK";
            break;
    }
}

更改 VKontakte 用户的头像状态

$statusSet = new StatusSet();
$statusSet->setText("This is my new status");
if($statusSet->doRequest()){
    echo $statusSet->getResponse();
}

在 VKontakte 讨论中添加评论

$boardComment = new BoardCreateComment();
$boardComment->setMessage("This is my new comment")
    ->setGroupId(1)
    ->setTopicId(21972158);
if ($boardComment->doRequest()) {
    echo $boardComment->getCommentId();
}

将您的 VKontakte 账户状态设置为“在线”

$online = new AccountSetOnline();
if($online->doRequest()){
    echo $online->getResponse();
}

向 VKontakte 用户发送消息

$message = new MessagesSend();
$message->setMessage("Hello people")
    ->setUserId(1);
if($message->doRequest()){
    echo $message->getMessageId();
}

在 VKontakte 创建新的投票

$poll = new PollsCreate();
$poll->setOwnerId(1)->setIsAnonymous(1)
     ->setQuestion("Would you like to provide financial assistance for a set of these classes?")
     ->addAnswer('Yes')
     ->addAnswer('Of course');
if($poll->doRequest()){
    echo $poll->getPollInfo()->getId() . "\n";
}

控制台日志示例

info(1).........[2016/11/27 17:48:46] -> Set parameter: user_ids as array, values: a:1:{i:0;i:1;}
debug(1)........[2016/11/27 17:48:46] -> execApi: https://api.vk.com/method/users.get?v=5.60
debug(2)........[2016/11/27 17:48:46] -> with headers: a:1:{s:12:"Content-type";s:19:"multipart/form-data";}
debug(3)........[2016/11/27 17:48:46] -> with parameters: a:1:{s:8:"user_ids";s:1:"1";}
debug(4)........[2016/11/27 17:48:46] -> execApi result: {"response":[{"id":1,"first_name":"Павел","last_name":"Дуров"}]}

连接您的记录器

\VkSdk\Includes\Request::setLogger(new \youre\Logger());

连接反验证码

$antiCaptcha = new \AntiCaptcha\RuCaptcha(); //integrated in project now
$antiCaptcha->setAccessToken($anti_captcha_access_token);
\VkSdk\Includes\Request::setAntiCaptcha($antiCaptcha);

设置请求前后的回调

\VkSdk\Includes\Request::setBeforeRequestCallback($this, 'beforeRequest');
\VkSdk\Includes\Request::setAfterRequestCallback($this, 'afterRequest');
//OR
\VkSdk\Includes\Request::setBeforeRequestCallback(function(){});
\VkSdk\Includes\Request::setAfterRequestCallback(function(){});

获取访问令牌: http://vk.com/dev/auth_sites
API 方法描述: http://vk.com/dev/methods

如果您发现错误,请给我发邮件