def renew_token(self, refresh_token):

        ''' a method to renew an access token from an oauth2 authorizing party

        :param auth_code: string with refresh token provided by service with access token
        :return: dictionary with access token details inside [json] key

        token_details = self.objects.token.schema
        '''

        title = '%s.renew_token' % self.__class__.__name__

    # validate inputs
        input_args = {
            'refresh_token': refresh_token
        }

        for key, value in input_args.items():
            if value:
                object_title = '%s(%s=%s)' % (title, key, value)
                self.fields.validate(value, '.%s' % key, object_title)

    # construct base url
        request_kwargs = {
            'url': self.token_endpoint
        }

    # construct token fields
        token_fields = {
            'grant_type': 'refresh_token',
            'refresh_token': refresh_token,
            'client_id': self.client_id,
            'client_secret': self.client_secret
        }

    # construct request params
        if self.request_mimetype == 'application/x-www-form-urlencoded':
            request_kwargs['data'] = token_fields
        elif self.request_mimetype == 'application/json':
            request_kwargs['json'] = token_fields
        else:
            request_kwargs['params'] = token_fields

    # send request
        from time import time
        current_time = time()
        token_details = self._post_request(**request_kwargs)

    # convert expiration info to epoch timestamp
        details = token_details['json']
        details['expires_at'] = 0
        if details:
            if 'expires_in' in details.keys():
                details['expires_at'] = int(current_time) + int(details['expires_in'])
                del details['expires_in']

        return token_details
def renew_token ( self , refresh_token ) : title = '%s.renew_token' % self . __class__ . __name__ input_args = { 'refresh_token' : refresh_token } for key , value in input_args . items ( ) : if value : object_title = '%s(%s=%s)' % ( title , key , value ) self . fields . validate ( value , '.%s' % key , object_title ) request_kwargs = { 'url' : self . token_endpoint } token_fields = { 'grant_type' : 'refresh_token' , 'refresh_token' : refresh_token , 'client_id' : self . client_id , 'client_secret' : self . client_secret } if self . request_mimetype == 'application/x-www-form-urlencoded' : request_kwargs [ 'data' ] = token_fields elif self . request_mimetype == 'application/json' : request_kwargs [ 'json' ] = token_fields else : request_kwargs [ 'params' ] = token_fields from time import time current_time = time ( ) token_details = self . _post_request ( ** request_kwargs ) details = token_details [ 'json' ] details [ 'expires_at' ] = 0 if details : if 'expires_in' in details . keys ( ) : details [ 'expires_at' ] = int ( current_time ) + int ( details [ 'expires_in' ] ) del details [ 'expires_in' ] return token_details
a method to renew an access token from an oauth2 authorizing party

        :param auth_code: string with refresh token provided by service with access token
        :return: dictionary with access token details inside [json] key

        token_details = self.objects.token.schema