J'utilise l'API Facebook Graph sur Google App Engine. J'ai été capable de récupérer toutes les informations de base d'un utilisateur. Toutefois, lorsque j'ai essayé d'extraire des informations d'utilisateur qui nécessitent une autorisation, un e-mail par exemple, il apparaît toujours comme Aucune. J'ai suivi tout le tutoriel disponible au developers blog.Comment obtenir des courriels utilisateur en utilisant Facebook Graph API dans GAE Python?
Voici mon code:
class User(db.Model):
id = db.StringProperty(required=True)
created = db.DateTimeProperty(auto_now_add=True)
updated = db.DateTimeProperty(auto_now=True)
name = db.StringProperty(required=True)
email = db.StringProperty(required=True)
profile_url = db.StringProperty(required=True)
access_token = db.StringProperty(required=True)
class BaseHandler(webapp.RequestHandler):
"""Provides access to the active Facebook user in self.current_user
The property is lazy-loaded on first access, using the cookie saved
by the Facebook JavaScript SDK to determine the user ID of the active
user. See http://developers.facebook.com/docs/authentication/ for
more information.
"""
@property
def current_user(self):
if not hasattr(self, "_current_user"):
self._current_user = None
cookie = facebook.get_user_from_cookie(
self.request.cookies, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET)
if cookie:
# Store a local instance of the user data so we don't need
# a round-trip to Facebook on every request
user = User.get_by_key_name(cookie["uid"])
if not user:
graph = facebook.GraphAPI(cookie["access_token"])
profile = graph.get_object("me")
user = User(key_name=str(profile["id"]),
id=str(profile["id"]),
name=profile["name"],
email=profile["email"],
profile_url=profile["link"],
access_token=cookie["access_token"])
user.put()
elif user.access_token != cookie["access_token"]:
user.access_token = cookie["access_token"]
user.put()
self._current_user = user
return self._current_user
Et voici le modèle/HTML:
<fb:login-button autologoutlink="true" perms="email"></fb:login-button>
{% if current_user %}
<p><a href="{{ current_user.profile_url }}"><img src="http://graph.facebook.com/{{ current_user.id }}/picture?type=square"/></a></p>
<p>Hello, {{ current_user.name|escape }}</p>
<p>email: {{ current_user.email }} </p>
{% endif %}
Y at-il quelque chose de mal? Existe-t-il un autre moyen d'obtenir des e-mails d'utilisateur?
Essayez d'ajouter une sortie de débogage du profil que vous obtenez de FB et de voir si l'email est là. Lorsque la boîte de dialogue d'autorisation FB apparaît, cela inclut-il l'autorisation de courrier électronique? – cope360