def METHOD_NAME(self):
    """After displaying instructions to the user, the client creates an
    access token request and sends it to the token endpoint with the
    following parameters:
    grant_type
        REQUIRED.  Value MUST be set to
        "urn:ietf:params:oauth:grant-type:device_code".
    device_code
        REQUIRED.  The device verification code, "device_code" from the
        device authorization response.
    client_id
        REQUIRED if the client is not authenticating with the
        authorization server as described in Section 3.2.1. of [RFC6749].
        The client identifier as described in Section 2.2 of [RFC6749].
    For example, the client makes the following HTTPS request::
        POST /token HTTP/1.1
        Host: server.example.com
        Content-Type: application/x-www-form-urlencoded
        grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code
        &device_code=GmRhmhcxhwAzkoEqiMEg_DnyEysNkuNhszIySk9eS
        &client_id=1406020730
    """
    device_code = self.request.data.get('device_code')
    if not device_code:
        raise InvalidRequestError('Missing "device_code" in payload')
    client = self.authenticate_token_endpoint_client()
    if not client.check_grant_type(self.GRANT_TYPE):
        raise UnauthorizedClientError()
    credential = self.query_device_credential(device_code)
    if not credential:
        raise InvalidRequestError('Invalid "device_code" in payload')
    if credential.get_client_id() != client.get_client_id():
        raise UnauthorizedClientError()
    user = self.validate_device_credential(credential)
    self.request.user = user
    self.request.client = client
    self.request.credential = credential