URL-адрес API социального oauth2 фреймворка Django и настройка ответа

#django #django-rest-framework #django-socialauth #django-oauth

#django #django-rest-framework #django-socialauth #django-oauth

Вопрос:

Я создаю систему API, которая следует по URL, подобному localhost:8080/api/v1/end_name , и я использую библиотеку django-rest-framework-social-oauth2 для социальной аутентификации, а также для моей пользовательской аутентификации пользователя. Проблема в том, что они предоставляют ответ api для URL, подобного localhost:8080/auth/token в следующем формате, например

 {
"access_token": "........",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "......"
}
  

но мне нужно настроить его по-своему, поскольку мой формат ответа отличается. Мой вариант выглядит следующим образом..

 {
    "error": false,
    "message": "User created successfully",
    "data": {
        "email": "localtestuse2@beliefit.com"
    }
}
  

мне нужен ответ в моем data: {} . Мой единственный вопрос

  • Как я могу это сделать?

Мой другой вопрос

  • Могу ли я настроить URL-адрес api localhost:8080/auth/token на localhost:8080/api/v1/auth/token ?

Ответ №1:

в конце концов я нашел решение. Чтобы создать пользовательский ответ, мне пришлось переопределить их метод и настроить ответ в соответствии с моими потребностями. Здесь вызываемый метод назван TokenView . итак, я настроил его следующим образом

 class UserLoginView(TokenView):
@method_decorator(sensitive_post_parameters("password"))
def post(self, request, *args, **kwargs):
    url, headers, body, status = self.create_token_response(request)
    # body is str here, we need to make it proper json
    data = json.loads(body)

    if status != 200:
        response = Response(makeContext(True, "Couldn't generated token", data))
    else:
        response = Response(makeContext(False, "Token generated successfully", data))

    response.accepted_renderer = JSONRenderer()
    response.accepted_media_type = "application/json"
    response.renderer_context = {}
    return response
  

вот makecontext мой индивидуальный метод создания json.