@@ -1096,6 +1096,7 @@ class FacebookGraphMixin(OAuth2Mixin):
1096
1096
_OAUTH_AUTHORIZE_URL = "https://graph.facebook.com/oauth/authorize?"
1097
1097
_OAUTH_NO_CALLBACKS = False
1098
1098
1099
+ @_auth_return_future
1099
1100
def get_authenticated_user (self , redirect_uri , client_id , client_secret ,
1100
1101
code , callback , extra_fields = None ):
1101
1102
"""Handles the login for the Facebook user, returning a user object.
@@ -1137,10 +1138,9 @@ def get(self):
1137
1138
client_secret , callback , fields ))
1138
1139
1139
1140
def _on_access_token (self , redirect_uri , client_id , client_secret ,
1140
- callback , fields , response ):
1141
+ future , fields , response ):
1141
1142
if response .error :
1142
- gen_log .warning ('Facebook auth error: %s' % str (response ))
1143
- callback (None )
1143
+ future .set_exception (AuthError ('Facebook auth error: %s' % str (response )))
1144
1144
return
1145
1145
1146
1146
args = escape .parse_qs_bytes (escape .native_str (response .body ))
@@ -1152,23 +1152,24 @@ def _on_access_token(self, redirect_uri, client_id, client_secret,
1152
1152
self .facebook_request (
1153
1153
path = "/me" ,
1154
1154
callback = self .async_callback (
1155
- self ._on_get_user_info , callback , session , fields ),
1155
+ self ._on_get_user_info , future , session , fields ),
1156
1156
access_token = session ["access_token" ],
1157
1157
fields = "," .join (fields )
1158
1158
)
1159
1159
1160
- def _on_get_user_info (self , callback , session , fields , user ):
1160
+ def _on_get_user_info (self , future , session , fields , user ):
1161
1161
if user is None :
1162
- callback (None )
1162
+ future . set_result (None )
1163
1163
return
1164
1164
1165
1165
fieldmap = {}
1166
1166
for field in fields :
1167
1167
fieldmap [field ] = user .get (field )
1168
1168
1169
1169
fieldmap .update ({"access_token" : session ["access_token" ], "session_expires" : session .get ("expires" )})
1170
- callback (fieldmap )
1170
+ future . set_result (fieldmap )
1171
1171
1172
+ @_auth_return_future
1172
1173
def facebook_request (self , path , callback , access_token = None ,
1173
1174
post_args = None , ** args ):
1174
1175
"""Fetches the given relative API path, e.g., "/btaylor/picture"
@@ -1220,13 +1221,13 @@ def get(self):
1220
1221
else :
1221
1222
http .fetch (url , callback = callback )
1222
1223
1223
- def _on_facebook_request (self , callback , response ):
1224
+ def _on_facebook_request (self , future , response ):
1224
1225
if response .error :
1225
- gen_log .warning ("Error response %s fetching %s" , response .error ,
1226
- response .request .url )
1227
- callback (None )
1226
+ future .set_exception (AuthError ("Error response %s fetching %s" ,
1227
+ response .error , response .request .url ))
1228
1228
return
1229
- callback (escape .json_decode (response .body ))
1229
+
1230
+ future .set_result (escape .json_decode (response .body ))
1230
1231
1231
1232
def get_auth_http_client (self ):
1232
1233
"""Returns the `.AsyncHTTPClient` instance to be used for auth requests.
0 commit comments