Django остальные фреймворки социальные oauth2 API URL и настройки ответа - PullRequest
0 голосов
/ 05 марта 2019

Я создаю систему 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 Ответ

0 голосов
/ 12 марта 2019

я в конце концов нашел решение.Чтобы сделать пользовательский ответ, мне пришлось переопределить их метод и настроить ответ в соответствии с моими потребностями.Здесь вызывается метод с именем 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 maker.

...