def authenticate(self, facebook_id, extra_fields=None):
url_profile = 'https://graph.facebook.com/{user_id}/picture'.format(
user_id=facebook_id,
)
params = {
'type': 'large',
'width': '500',
'height': '500',
}
# ????? ???? ??
temp_file = NamedTemporaryFile(delete=False)
# ??? ???? URL? get??, stream? True??
r = requests.get(url_profile, params, stream=True)
# ???? URL?? ?? ???? ???
_, file_ext = os.path.splitext(r.url)
file_ext = re.sub(r'(\.[^?]+).*', r'\1', file_ext)
# ???? ?? ID.??? ? file_name? ??
file_name = '{}{}'.format(
facebook_id,
file_ext
)
# stream?? ??? response?? 1024bytes??? ???? ?? ????? ??
for chunk in r.iter_content(1024):
temp_file.write(chunk)
# facebook_id? username? MyUser? ?????
# defaults?? ???? ??
defaults = {
'first_name': extra_fields.get('first_name', ''),
'last_name': extra_fields.get('last_name', ''),
'email': extra_fields.get('email', ''),
}
user, user_created = MyUser.objects.get_or_create(
defaults=defaults,
username=facebook_id
)
# ImageField? save???? ???? Django?? ???? File??? ??
user.img_profile.save(file_name, File(temp_file))
return user
评论列表
文章目录