Пример #1
0
 def __init__(self, instance=None, data=None, **kwargs):
     if data:
         seconds_plus = data.pop('expires_in')
         data['expires'] = make_time_delta(seconds=seconds_plus)
         super(AccessTokenSerializer, self).__init__(data=data, **kwargs)
     else:
         super(AccessTokenSerializer, self).__init__(instance, **kwargs)
Пример #2
0
    def get_token(self, user):
        token_dict = {
            "access_token": generate_token(),
            "token_type": "Bearer",
            "expires_in":
            settings.OAUTH2_PROVIDER['ACCESS_TOKEN_EXPIRE_SECONDS'],
            "refresh_token": generate_token(),
            "scope": ' '.join(settings.OAUTH2_PROVIDER['SCOPES'].keys()),
            'wx_out_open_id': user.wx_out_open_id,
            'wb_uid': user.wb_uid
        }
        if isinstance(self.application, Exception):
            return self.application

        access_token_data = {
            'token': token_dict['access_token'],
            'expires': make_time_delta(seconds=token_dict['expires_in']),
            'scope': token_dict['scope'],
            'application': self.application,
            'user': user
        }
        _access_token = Oauth2_AccessToken(**access_token_data)
        if not _access_token.is_valid():
            return ValueError('Access token is not valid')
        _access_token.save()
        refresh_token_data = {
            'token': token_dict['refresh_token'],
            'access_token': _access_token,
            'application': self.application,
            'user': user
        }
        _refresh_token = Oauth2_RefreshToken(**refresh_token_data)
        _refresh_token.save()

        # 标记用户已经登录
        self.mark_user_login(user)
        return token_dict