@Denny_Colt

Как авторизоваться вк, используя библиотеку vk api?

Я перепробовал все, что только смог найти в интернете.
import vk

app_id, login, password = '6126300', 'login', 'password'
session = vk.AuthSession(app_id, login, password, scope='messages')
vk_api = vk.API(session, v='5.67')
vk_api.wall.post(message="hello world")


Раньше это можно было сделать так, но сейчас так же не работает
session = vk.Session(access_token='793ac3c7c978d96f8ea1357747393bad78836ac813e7217baa5b37b3111c16b13514d41026f183fc0b359')
api = vk.API(session)
api.wall.post(message="Hello, world")
  • Вопрос задан
  • 8331 просмотр
Пригласить эксперта
Ответы на вопрос 4
@trofimovdev
Python
Авторизация проходит успешно.
Ошибка в том, что вы пытаетесь написать на стену без определенных прав доступа. Для того, чтобы сделать это вам нужно задать права wall или вместо api.wall.post(message="Hello, world") использовать метод, на который у вас есть права (исходя из текста вопроса):
api.messages.send(user_id=*любой_юзер*, message=*любое_сообщение*)
Ответ написан
@sakost
Начинающий недопрограммист на python.
В библиотеке есть ошибка
Можешь написать в лс, могу скинуть похожую библиотеку, которая
1) Аутентификацию делает в 2 раза быстрее
2) Места занимает намного меньше
И аутентификация по паре логин-пароль работает(там не нужно парсить страницы, как это делает vk)

А вообще можешь сделать сам запрос типа "https://oauth.vk.com/token?grant_type=password&pas...<пароль>&username=<логин>&client_secret=<секрет приложения>〈=ru&libverify_support=1&client_id=&2fa_supported=1&scope=all"
Он вернёт {"access_token": '', "expire_in": "<через сколько токен будет недействительным>"}
Ответ написан
Комментировать
@FlooJack
token = vk_api.VkApi(token = "")
vk = token.get_api()

vk.messages.send(user_id = "твой id", message = "Твой текст", random_id = 0)

ВАЖНО!!!!
Чтобы получить token тебе нужно зайти на этот сайт - https://vkhost.github.io/
а логин и пароль работают только в определённых случаях а так их ограничили!
Ответ написан
Комментировать
@deviur
Во втором примере пропущен аргумент v.

Должно быть:
vk_api = vk.API(session, v='5.67')

Вместо:
api = vk.API(session)

Само собой, что при получении access_token должны быть получены права scope='wall'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы