import requests import facebook from django.conf import settings from .models import FacebookPage SHORT_LIVED_USER_TOKEN = getattr(settings, 'SHORT_LIVED_USER_TOKEN', None) APP_ID = getattr(settings, 'APP_ID', None) APP_SECRET = getattr(settings, 'APP_SECRET', None) def short2long_lived_user_token(short_lived_user_token, app_id, app_secret): access_token_url = f"https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={short_lived_user_token}" response = requests.get(access_token_url) access_token_info = response.json() user_long_token = access_token_info['access_token'] return user_long_token def get_pages(user_long_token): api = facebook.GraphAPI(access_token=user_long_token, version='3.1') res = api.get_object('/me/accounts') pages = res.get('data') return pages def insert_pages_into_db(pages): for page in pages: page_id = page.get('id', None) try: facebook_page = FacebookPage.objects.get(pk=page_id) except FacebookPage.DoesNotExist: facebook_page = FacebookPage(id=page_id) page_name = page.get('name', None) page_access_token = page.get('access_token', None) facebook_page.name = page_name facebook_page.token = page_access_token facebook_page.save() def store_pages(): token = short2long_lived_user_token( short_lived_user_token=SHORT_LIVED_USER_TOKEN, app_id=APP_ID, app_secret=APP_SECRET ) pages = get_pages(user_long_token=token) insert_pages_into_db(pages=pages)