Skip to content

Commit 7d30403

Browse files
committed
In FacebookGraphMixin, explicitly request required user fields.
This is necessary due to a recent change in the facebook API. Closes tornadoweb#227.
1 parent cc2363a commit 7d30403

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

tornado/auth.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -955,15 +955,16 @@ def _on_login(self, user):
955955
"client_secret": client_secret,
956956
}
957957

958-
if extra_fields and not isinstance(extra_fields, (set, frozenset)):
959-
extra_fields = set(extra_fields)
958+
fields = set(['id', 'name', 'first_name', 'last_name',
959+
'locale', 'picture', 'link'])
960+
if extra_fields: fields.update(extra_fields)
960961

961962
http.fetch(self._oauth_request_token_url(**args),
962963
self.async_callback(self._on_access_token, redirect_uri, client_id,
963-
client_secret, callback, extra_fields))
964+
client_secret, callback, fields))
964965

965966
def _on_access_token(self, redirect_uri, client_id, client_secret,
966-
callback, extra_fields, response):
967+
callback, fields, response):
967968
if response.error:
968969
logging.warning('Facebook auth error: %s' % str(response))
969970
callback(None)
@@ -977,20 +978,17 @@ def _on_access_token(self, redirect_uri, client_id, client_secret,
977978
self.facebook_request(
978979
path="/me",
979980
callback=self.async_callback(
980-
self._on_get_user_info, callback, session, extra_fields),
981+
self._on_get_user_info, callback, session, fields),
981982
access_token=session["access_token"],
982-
fields="picture" # This one's exceptional in that it appends to fields returned
983+
fields=",".join(fields)
983984
)
984985

985986

986-
def _on_get_user_info(self, callback, session, extra_fields, user):
987+
def _on_get_user_info(self, callback, session, fields, user):
987988
if user is None:
988989
callback(None)
989990
return
990991

991-
fields = set(['id', 'name', 'first_name', 'last_name', 'locale', 'picture', 'link'])
992-
if extra_fields: fields.update(extra_fields)
993-
994992
fieldmap = {}
995993
for field in fields:
996994
fieldmap[field] = user.get(field)

0 commit comments

Comments
 (0)