我正在尝试在我的django项目中实现OAuth2。我是消费者方,我需要从提供商方获取“ 代码”。我的应用程序正在django中实现。
在我的产品/view.py中;
def auth_for_app(request):
CLIENT_ID = "xxxxxx"
CLIENT_SECRET = "xxxxxx"
# In provider side, this redirect_uri is also saved #
REDIRECT_URI = 'http://127.0.0.1/products/auth'
AUTHORIZE_URL = "https://www.PROVIDER-WEBSITE.com/admin/user/auth"
ACCESS_TOKEN_URL = "https://www.PROVIDER-WEBSITE.com/oauth/v2/token"
if request.method == 'GET':
if 'provider' in request.GET:
# 1. Ask for an authorization code
r = requests.get('{}?response_type=code&client_id={}&redirect_uri={}'.format(AUTHORIZE_URL, CLIENT_ID, REDIRECT_URI))
return render (request, 'products/auth.html')
在我的产品/urls.py中
from django.urls import path
from django.views.generic.base import TemplateView
from . import views
app_name = 'products'
urlpatterns = [
path('', views.IndexView.as_view(), name='base'),
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
path('auth/', views.auth_for_app, name='auth_for_app'),
]
在相关的html文件(products / templates / products / example.html)中,我有一个用于此请求的按钮;
<form role="form" action="{% url 'products:auth_for_app' %}" method="GET">
{{ provider_form.as_p }}
<input type="submit" class="btn" value="Auth: App" name="provider">
</form>
我期望的是,当我单击“ 身份验证:应用”按钮时,我的应用程序应转到提供商的相关授权页面,以使用户批准或拒绝。之后,它将使用相关的 code 值将用户重定向到我的'http://127.0.0.1/products/auth'页面。
当我在 Postman 中尝试此过程时,该过程成功了(当然使用了postman的回调URL。我也应该在提供者的应用程序设置中使用postman的回调URL来更改redirect_uri)。 / p>