code: def token_setter(remote, token, secret='', token_type='', extra_data=None,
                   user=None):
      
      session[token_session_key(remote.name)] = (token, secret)
      user = user or current_user
  
      # Save token if user is not anonymous (user exists but can be not active at
      # this moment)
      if not user.is_anonymous:
          uid = user.id
          cid = remote.consumer_key
  
          # Check for already existing token
          t = RemoteToken.get(uid, cid, token_type=token_type)
  
          if t:
              t.update_token(token, secret)
          else:
              t = RemoteToken.create(
                  uid, cid, token, secret,
                  token_type=token_type, extra_data=extra_data
              )
          return t
      return None
docs: Set token for user.
  
      :param remote: The remote application.
      :param token: The token to set.
      :param token_type: The token type. (Default: ``''``)
      :param extra_data: Extra information. (Default: ``None``)
      :param user: The user owner of the remote token. If it's not defined,
          the current user is used automatically. (Default: ``None``)
      :returns: A :class:`invenio_oauthclient.models.RemoteToken` instance or
          ``None``.