我写了一个函数,目的是从重定向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***
答案 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']