Example #1
0
    def post(self, request):
        vk_key = request.data['access_key']
        email = request.data['email']
        vk_id = int(request.data['vk_id'])

        try:
            session = vk.Session(access_token=vk_key)
            api = vk.API(session)
            profile = api.account.getProfileInfo()
            try:
                user = User.objects.get(photouser__vk_id=vk_id)
            except User.DoesNotExist:
                user = User(
                    username=str(uuid.uuid1()),
                    first_name=profile['first_name'],
                    last_name=profile['last_name'],
                    email=email,
                    password=vk_key,
                    is_active=True
                )
                user.save()
                user.photouser = PhotoUser(
                    user=user,
                    vk_id=vk_id,
                    vk_key=vk_key,
                )
                user.photouser.save()

        except vk.exceptions.VkAPIError:
            raise exceptions.AuthenticationFailed('Wrong VK key')

        if not user.photouser.avatar:
            vk_profile = api.users.get(fields="photo_200_orig,photo_100")[0]
            filepattern = "u%i.jpg" % vk_id
            urllib.request.urlretrieve(
                vk_profile['photo_200_orig'],
                os.path.join(settings.MEDIA_ROOT, "vkava", filepattern)
            )
            urllib.request.urlretrieve(
                vk_profile['photo_100'],
                os.path.join(settings.MEDIA_ROOT, "vkava", "thumb", filepattern)
            )
            user.photouser.avatar = os.path.join("vkava", filepattern)
            user.photouser.thumb = os.path.join("vkava", "thumb", filepattern)
            user.photouser.save()
        serializer = UserSerializer(user)

        return Response({
            "token": user.photouser.auth_token
        })
Example #2
0
 def authenticate(self, token=None):
     r = requests.get("https://oauth.vk.com/access_token", {
         "client_id": "5136311",
         "client_secret": "PstbepOKAA4mqW0AF4Ok",
         "redirect_uri":  settings.OAUTH_SITE_URL + "auth/",
         "code": token
     })
     data = r.json()
     vk_key = data['access_token']
     email = data['email']
     vk_id = data['user_id']
     try:
         session = vk.Session(access_token=vk_key)
         api = vk.API(session)
         profile = api.users.get(fields="first_name,photo_200_orig,last_name,photo_100")[0]
     except vk.exceptions.VkAPIError:
         return None
     try:
         user = User.objects.get(photouser__vk_id=vk_id)
     except User.DoesNotExist:
         user = User(
             username=str(uuid.uuid1()),
             first_name=profile['first_name'],
             last_name=profile['last_name'],
             email=email,
             password=vk_key,
             is_active=True
         )
         user.save()
         user.photouser = PhotoUser(
             user=user,
             vk_id=vk_id,
             vk_key=vk_key,
         )
         user.photouser.save()
     if not user.photouser.avatar:
         filepattern = "u%i.jpg" % vk_id
         urllib.request.urlretrieve(
             profile['photo_200_orig'],
             os.path.join(settings.MEDIA_ROOT, "vkava", filepattern)
         )
         urllib.request.urlretrieve(
             profile['photo_100'],
             os.path.join(settings.MEDIA_ROOT, "vkava", "thumb", filepattern)
         )
         user.photouser.avatar = os.path.join("vkava", filepattern)
         user.photouser.thumb = os.path.join("vkava", "thumb", filepattern)
         user.photouser.save()
     return user