Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to extend facebook access token in python

I am using the Python facebook-sdk client library. I currently have a short-lived access token obtained from https://developers.facebook.com/tools/accesstoken/ that I copy the code from the site into my code for authentication.

       graph = facebook.GraphAPI(access_token)

This token however expires after 60-mins. I am looking to extend this to a 60 day-long lived token so that don't need to manually copy in new every time it expires. I can find numerous answers on how to do this in different formats, however not python (or at least not simply without log in page etc.).

[for reference, the code I will be using is only intended for my use, and as such, I am not looking to create a log in page. I just want to be able to extend the token I already have].

like image 896
kyrenia Avatar asked Nov 18 '14 19:11

kyrenia


2 Answers

here's an edited version , compatible with latest api versions:

import requests
import json
access_token = 'your token'     # Obtained from https://developers.facebook.com/tools/accesstoken/
app_id = "your app id"          # Obtained from https://developers.facebook.com/        
client_secret = "app secret"    # Obtained from https://developers.facebook.com/

link = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=" + app_id +"&client_secret=" + client_secret + "&fb_exchange_token=" + access_token
s = requests.Session()
token = s.get(link).content
token=json.loads(token)
token=token.get('access_token')

print token
like image 23
kyrenia Avatar answered Dec 02 '22 08:12

kyrenia


Not sure if this was available in python's FB API when the question was originally asked, but a neater approach to extend the expiry of the access token would be:

graph = facebook.GraphAPI(user_short_lived_token_from_client)
app_id = 'app_id' # Obtained from https://developers.facebook.com/
app_secret = 'app_secret' # Obtained from https://developers.facebook.com/

# Extend the expiration time of a valid OAuth access token.
extended_token = graph.extend_access_token(app_id, app_secret)
print extended_token #verify that it expires in 60 days
like image 52
uchamp Avatar answered Dec 02 '22 10:12

uchamp