@PaulNorthern

Как получить access_token у Python Social Auth для публикация поста в vk?

Привет всем. Получилось логиниться в вк через python-social-auth. Теперь хочу отправить пост в группу, но для этого надо вытащить access_token текущего авторизованного пользователя. И в параметр message потом как-нибудь взять значение из инпута.

UPDATED
Теперь если просто запихать свой токен полученный из ссылки браузера и нажать кнопку отправки, то всё работает и сообщение придет в группу! Однако, нужен токен полученный из access_token через Python Social Auth, чтобы можно было просто авторизоваться и сразу отправить пост.

Из setting.py
SOCIAL_AUTH_VK_OAUTH2_SCOPE = ['offline','photos','wall','groups']


def post_vk(request):
    # current_user = request.user.id
    # user = User.objects.filter(pk=current_user)[0]
    user = request.user
    social = user.social_auth.get(provider='vk-oauth2')
    token = social.extra_data['access_token']
  
    params = (
        ('owner_id', '-1234567890'),
        ('from_group', '1'),  
        ('message', 'qq everybody'),   
        ('access_token', token),    # если заменить token на 'fawufhawjfh2152...' все работает
        ('v', 5.52), 
        )
    
    response = requests.get('https://api.vk.com/method/wall.post', params=params)
    
    from django.http import HttpResponse
    #return HttpResponse(str(response))
    return render(request, 'home.html')
    print(response)
)
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@g0thb0iclique
Читайте документацию: https://vk.com/dev/auth_direct
Авторизация происходит через один запрос:
import requests
import json

client_id = '2274003' # client_id и client_secret официального приложения на Android
client_secret = 'hHbZxrka2uZ6jB1inYsH'
url = 'https://oauth.vk.com/token'
params = (
    ('grant_type', 'password'),
    ('client_id', client_id),
    ('client_secret', client_secret),
    ('scope', '1073737727'),
    ('username', 'логин'),
    ('password', 'пароль'))

user_token = json.loads(requests.post(url, params=params).text)['access_token']
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы