我正在使用Spotify提供的隐式授予授权(1/3)类型的授权。
回调URL看起来像这样http://localhost:8000/callback/#access_token=BQDRRPQ1Nulwcxx...mFNtnTsVUNlkCg&token_type=Bearer&expires_in=3600&state=NtiLgMVtLPx926Ay
如果是http://localhost:8000/callback/**?**access_token
然后,我可以在我的视图中使用request.GET
获取查询参数,但由于它有**#**,request.GET
返回空字典。
我还尝试了request.build_absolute_uri()
,但它只返回http://localhost:8000/callback/
这是我的观点
def callback(request, format=None):
print(request.GET)
if "access_token" in request.GET:
print(request.GET["access_token"])
return HttpResponse("Callback")
我希望request.GET
有access_token
,expires in和URI中的参数,但我得到的是空的dict。
1条答案
按热度按时间liwlm1x91#
在Spotify使用的隐式授权流程中,访问令牌和其他参数通常包含在回调URL的片段标识符中(在“#”之后)。但是,片段标识符并不是由浏览器发送到服务器的,所以你不能在Django视图中使用request.GET来获取这些参数。
相反,您可以在客户端使用JavaScript访问片段标识符及其参数。下面是一个如何使用JavaScript检索访问令牌并将其发送到服务器的示例:
在服务器端,您可以定义一个单独的端点来处理JavaScript代码发送的访问令牌:
确保在Django应用程序中设置了适当的URL路由来处理回调和令牌处理端点。
通过使用JavaScript从片段标识符中检索访问令牌并将其发送到服务器,您可以解决片段标识符不包含在服务器请求参数中的限制。