Looping Redirect avec PyFacebook et Google App Engine
-
23-09-2019 - |
Question
J'ai un projet Facebook Python hébergé sur Google App Engine et utilisez le code suivant pour gérer l'initialisation de l'API Facebook en utilisant PyFacebook.
# Facebook Initialization
def initialize_facebook(f):
# Redirection handler
def redirect(self, url):
logger.info('Redirecting the user to: ' + url)
self.response.headers.add_header("Cache-Control", "max-age=0")
self.response.headers.add_header("Pragma", "no-cache")
self.response.out.write('<html><head><script>parent.location.replace(\'' + url + '\');</script></head></html>')
return 'Moved temporarily'
auth_token = request.params.get('auth_token', None)
fbapi = Facebook(settings['FACEBOOK_API_KEY'], settings['FACEBOOK_SECRET_KEY'], auth_token=auth_token)
if not fbapi:
logger.error('Facebook failed to initialize')
if fbapi.check_session(request) or auth_token:
pass
else:
logger.info('User not logged into Facebook')
return lambda a: redirect(a, fbapi.get_login_url())
if fbapi.added:
pass
else:
logger.info('User does not have ' + settings['FACEBOOK_APP_NAME'] + ' added')
return lambda a: redirect(a, fbapi.get_add_url())
# Return the validated API
logger.info('Facebook successfully initialized')
return lambda a: f(a, fbapi=fbapi)
Je suis en train de le mettre en place pour que je puisse déposer ce décorateur sur une méthode de gestionnaire de la page et vérifiez que l'utilisateur a tout mis en place correctement. Le problème est que lorsque le gestionnaire de redirection est appelé, il commence une boucle infinie de redirection.
J'ai essayé d'utiliser une redirection HTTP 302 à la place du JavaScript, mais qui a gardé à défaut aussi. Est-ce que quelqu'un sait ce que je peux faire pour résoudre ce problème?
J'ai vu cette
La solution J'étais en train de la même chose arrive à moi aujourd'hui! Ce que je pense qui se passe est que fbapi.check_session () ne réglage fbapi.added correctement. Je ne pense pas que le Post-Ajouter URL contient « installé » plus, mais il a encore « fb_sig_added ». Le changement suivant (code github-esque) dans pyfacebook a arrêté la redirection infinie pour moi: 1244 | 1244 | if request.method == 'POST':
1245 | 1245 | params = self.validate_signature(request.POST)
1246 | 1246 | else:
1247 | | - if 'installed' in request.GET:
| 1247 | + if 'installed' in request.GET or request.GET['fb_sig_added'] == '1':
1248 | 1248 | self.added = True
Autres conseils
Le problème semble familier. Puissiez vous pouvez utiliser la solution de ma question ici:
app-patch moteur et pyFacebook ne fonctionne pas
Mais qui était avec le décorateur qui vient avec pyfacebook il peut être différent.