12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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)
|