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)
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