如何从重定向网址的响应中获取“代码”值?

时间:2018-08-04 16:55:09

标签: django python-3.x oauth-2.0

我写了一个函数,目的是从重定向URL的响应中获取 code 值,但是我无法捕获它。

功能;

-----BEGIN PUBLIC KEY-----
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEBiTlkxxYVLduJeiQ7V1AqG4bY9lxrxLX
un+qd4BeaICC1Yx/nsDvvXEPwfCYwXgnyk3u7DV3ldUiaXCIr89OoNei6D2Xgrs3
KYtpVEv7ylnUzo8xZH3/mMdLMUiy6fl8
-----END PUBLIC KEY-----

我还写了def auth_for_app(request): CLIENT_ID = "xxx" CLIENT_SECRET = "xxx" REDIRECT_URI = 'http://127.0.0.1:8000/products/auth' AUTHORIZE_URL = "https://www.example.com/admin/user/auth" ACCESS_TOKEN_URL = "https://www.example.com/oauth/v2/token" STATE = "2b33fdd45jbevd6nam" # temporary state id request.GET.get('{}?client_id={}&response_type=code&state={}&redirect_uri={}'.format(AUTHORIZE_URL, CLIENT_ID, STATE, REDIRECT_URI)) request.session['code'] = request.GET.get('code') code = request.session['code'] print ("***AUTH START***") print (code) print ("***AUTH END***") return render (request, 'products/auth.html') ,可以确定自己正在抓住它。但是我得到了这个结果;

print

编辑(添加的产品/urls.py):

products / urls.py;

***AUTH START***
None
***AUTH END***

1 个答案:

答案 0 :(得分:0)

您在这里误解了一些东西。

request.GET是通过request对象(即视图函数参数)传递给视图的查询。换句话说,如果用户转到/auth/?foo=bar,则request.GET get('foo')将给出结果“ bar”。

这不会向其他网站发出任何请求。为此,您需要完全不同的东西-名为requests的第三方库。尽管名称相似,但它们彼此无关。您需要安装请求,将其导入到视图文件中,进行调用,并对响应进行一些操作:

import requests
...
response = requests.get(AUTHORIZE_URL, params={"client_id": CLIENT_ID, "response_type": "code", "state": STATE, "redirect_uri": REDIRECT_URI})
code = response.json()['code']