backends.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:WPS-4th 作者: Fastcampus-WPS 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号