Какое поле необходимо использовать для хранения oauth_consumer_key в моделях Django? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь создать приложение django, которое предоставляет представление после аутентификации с использованием oauth1. Внешнее приложение отправляет данные формы POST с помощью oauth_consumer_key, и я хочу проверить его с помощью моего приложения django и предоставить соответствующее представление после аутентификации. Может кто-нибудь сказать мне поток этого процесса. Я относительно новичок во всем этом. Кроме того, в этом процессе нет обмена токенами.
Это домашний вид для моего приложения

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from . import models
from django.views.decorators.csrf import csrf_exempt
from urllib.parse import urlparse
import oauth2

@csrf_exempt
def home(request):
    consumer = None
    body_dict = dict([(key,value) for key,value in  request.POST.items()])
    oauth_request =  oauth2.Request.from_request(request.method ,body_dict.get('launch_presentation_return_url'),parameters=body_dict)
    request_key = oauth_request.get_parameter('oauth_consumer_key')
    if request_key == models.Verify.consumer_key :
        consumer = oauth2.Consumer(key=request_key,secret = "")
    signature_method = oauth2.SignatureMethod_HMAC_SHA1()
    oauth_request.sign_request(signature_method,consumer,None)
    server = oauth2.Server()
    server.add_signature_method(oauth2.SignatureMethod_HMAC_SHA1())
    try :
        server.verify_request(oauth_request,consumer, None)
    except oauth2.Error as e :
        if str(e)[:18] == 'Expired Timestamp':
            res = HttpResponse('Unauthorized')
            res.status_code = 401
            return res
        elif str(e)[:17] == 'Invalid Signature':
            res = HttpResponse('Unauthorized')
            res.status_code = 401
            return res
        else:
            raise e
        base_template = 'DemoApp/base.html'

        template = loader.get_template(base_template)
    return HttpResponse(template.render())

Также я уверен, что в этом коде гораздо больше ошибок. Направь меня, если сможешь. Спасибо

...