Как опубликовать обновление статуса в ВК (вКонтакте)?

Я зарегистрировал отдельное приложение в ВК (вКонтакте) для отправки сообщения о статусе в профиль пользователя через мой сервер.

После того, как я авторизовал профиль пользователя и получил действительный токен и userID, я попытался опубликовать обновление статуса на стене ВКонтакте через PHP и OAuth2, но получил эту ошибку:

Permission to perform this action is denied for non-standalone applications: you should request token using blank.html page

Мое приложение является автономным приложением, в чем может быть причина появления сообщения об ошибке?


person Jay    schedule 26.02.2014    source источник


Ответы (1)


  • сначала создайте отдельное приложение (Джей не создавал отдельное приложение), телефонный код и т. д.
  • чем перейти по этому адресу http://vk.com/apps?act=manage нажать управлять приложение, которое вы только что создали. на странице настроек получите идентификационный номер приложения.
  • теперь вам нужны токен и идентификатор пользователя. это URL-адрес, который ваш пользователь вставит в свой браузер. чем вам понадобится URL-адрес страницы, которую перенаправил пользователь. (или найдите способ сделать все это вашим приложением) https://oauth.vk.com/authorize?client_id=YOUR-APP-ID&scope=pages,wall,offline&redirect_uri=http://oauth.vk.com/blank.html&response_type=token больше областей можно найти здесь https://vk.com/dev/permissions пример URL-адреса для публикации на стене, публикации страницы и т. д. Пользователь даст разрешения и все. теперь у вас есть токен и идентификатор пользователя (если он / она предоставил вам URL-адрес перенаправленной страницы сразу после предоставления вашему приложению разрешений)
  • пример адреса токена

    https://oauth.vk.com/blank.html#access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&expires_in=0&user_id=xxxxxxxx

теперь, чтобы опубликовать на стене пользователей, это код

curl( 'https://api.vk.com/method/wall.post?owner_id='.$user_id.'&friends_only=&from_group=1&message='. urlencode( $message ) .'&attachments='.$url.'&access_token='. $token );

для публикации на странице вам нужен пример номера страницы vk.com/public111111 и пример кода (PS: на этот раз идентификатор владельца должен быть отрицательным с номером страницы -111111)

curl( 'https://api.vk.com/method/wall.post?owner_id=-111111&friends_only=&from_group=1&message='. urlencode( $message ) .'&attachments='.$url.'&access_token='. $token );

и функция curl здесь

function curl( $url ) {
        $ch = curl_init( $url );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );

        $response = curl_exec( $ch );
        curl_close( $ch );
        echo $response;
        return $response;
}

Это оно. всему остальному вы можете научиться самостоятельно.

person Engin Zeybekoğlu    schedule 03.09.2014
comment
Извините за поздний ответ, я как-то пропустил ваш ответ. Одного я не понимаю, как получить доступ к токену, если домен перенаправления не мой, а https://oauth.vk.com/blank.html#access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&expires_in=0&user_id=xxxxxxxx? Пожалуйста, объясни. Большое спасибо за ваш пример. - person Jay; 16.12.2014
comment
напишите что-то вроде этого (для вашего пользователя, чтобы включить приложение), 1. нажмите на ссылку 2. дайте разрешения приложения. 3. вы будете перенаправлены на страницу, подобную этой 4. скопируйте и вставьте адрес, который вы указали - person Engin Zeybekoğlu; 16.12.2014
comment
Я пробовал это, но вы не получаете токен, который действителен для публикации обновлений на стене пользователя! Хотелось бы увидеть рабочий пример, но пока не нашел. - person Jay; 16.12.2014
comment
мое приложение было частным, поэтому я не пытался создать страницу обработки перенаправления в своем домене. если вы определили свое доменное имя в своем приложении vk и все еще не работает, извините, но это не моя проблема. то, как я сказал вам, работает, я знаю, потому что это то, что я сделал шаг за шагом после многих маааааааааааааааких поисков и множества русских вещей. - person Engin Zeybekoğlu; 17.12.2014
comment
Получение ошибки на следующих шагах: [error_code] => 15 [error_msg] => Access denied: no access to call this method. Также пробовал с библиотекой oauth2, та же ошибка. Я предполагаю, что метод wall.post не разрешен вызовами веб-сервера (например, PHP) - person webcoder; 17.03.2015