Offline Access Facebook Apps (infinite session) in Appengine Webapp
// demonstrate how to get infinite session from facebook apps
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
import urllib
import facebook
FACEBOOK_API_KEY='..'
FACEBOOK_SECRET_KEY='..'
class FacebookPage(webapp.RequestHandler):
def get(self):
fb = Facebook(FACEBOOK_API_KEY, FACEBOOK_SECRET_KEY,
callback_path=self.request.path)
auth_token = self.request.get('auth_token')
#got auth_token, get temporary session
if auth_token:
try:
fb.auth_token = auth_token
fb.auth.getSession()
except:
self.redirect(fb.get_login_url(next=self.request.url, canvas=False))
else:
#not authenticated yet, redirect to facebook login URL
return self.redirect(fb.get_login_url(next=self.request.url, canvas=False))
#now we have a live session
#we can get her basic info
user_info = self.facebook.users.getInfo([self.facebook.uid], ['name', 'pic_square'])[0]
#check for offline access permission
permission_link = None
if not self.facebook.users.hasAppPermission('offline_access'):
params = {
'api_key':FACEBOOK_API_KEY,
'ext_perm':'offline_access,status_update,read_stream',
'next':self.request.url,
'cancel':self.request.url,
}
permission_link = "http://www.facebook.com/connect/prompt_permissions.php?%s" % urllib.urlencode(params)
else:
#got permission, save her session for future use
if fb.session_key_expires == 0:
user = User(uid=fb.uid, session_key=fb.session_key)
user.put()
self.response.out.write(template.render(
'facebook_page.html', {
'permission_link':permission_link,
'user_info':user_info})
Thanks for the post!!
I could not able to use the offline_access even after reading. I would be glad if you could clarify
1) fb = Facebook(FACEBOOK_API_KEY, FACEBOOK_SECRET_KEY,
callback_path=self.request.path)
are your using standard facebook sdk? where is Facebook class
could you please provide me running code for this. looking for your help.
Anyways your blog seems really interesting!! at lest for the python lover and beginner like me!!!