J'essaie de configurer mon application (iframe) Facebook pour utiliser OAuth pour l'authentification. J'ai utilisé le python-sdk de Facebook, mais je ne suis pas encore très satisfait du résultat.Facebook OAuth connexion pour les applications de toile iframe affiche une image de logo et une légende Aller à Facebook.com au lieu de se connecter
Le problème est que lorsque je rediriger un utilisateur qui n'a jamais accédé ma demande à la page de connexion, mon iframe Prèsentoir une page intermédiaire laide, comme la suivante:
Si l'utilisateur clique Sur le lien "Aller à Facebook.com", elle est ensuite redirigée vers la page "Demande d'autorisation" standard.
Est-il possible d'éviter la première page et conduire l'utilisateur directement à la seconde?
Ce problème se produit sur le premier accès pour les utilisateurs qui n'ont pas encore accordé d'autorisation à mon application.
Le code de connexion est basé sur l'exemple OAuth dans le SDK Python:
class LoginHandler(BaseHandler):
def get(self):
verification_code = self.request.get("code")
args = dict(client_id=FACEBOOK_APP_ID, redirect_uri=self.request.path_url)
if self.request.get("code"):
args["client_secret"] = FACEBOOK_APP_SECRET
args["code"] = self.request.get("code")
raw_response = urllib.urlopen(
"https://graph.facebook.com/oauth/access_token?" +
urllib.urlencode(args)).read()
logging.debug("access_token raw response " + raw_response)
response = cgi.parse_qs(raw_response)
access_token = response["access_token"][-1]
# Download the user profile and cache a local instance of the
# basic profile info
graph = facebook.GraphAPI(access_token)
profile = graph.get_object("me")
user = User.get_by_key_name(profile["id"])
if not user:
user = User(key_name=str(profile["id"]),
id=str(profile["id"]),
name=profile["name"],
firstname=profile["first_name"],
profile_url=profile["link"],
access_token=access_token)
user.put()
elif user.access_token != access_token:
# we already know this user, but we need to update
user.access_token = access_token
user.put()
set_cookie(self.response, "fb_user", str(profile["id"]),
expires=time.time() + 30 * 86400)
self.response.headers["P3P"] = 'CP="IDC CURa ADMa OUR IND PHY ONL COM STA"'
self.redirect("/")
else:
self.redirect(
"https://graph.facebook.com/oauth/authorize?" +
urllib.urlencode(args))
La première page s'affiche si vous êtes connecté sur Facebook? De mon expérience, le comportement est très différent selon si votre utilisateur est connecté sur Facebook ou non, et si votre utilisateur a déjà accepté votre application ou non. –
La page s'affiche jusqu'à ce que l'utilisateur accepte accepte mon application, indépendamment du fait qu'il soit connecté ou non. – abahgat