我正在尝试使用Django rest框架和django-oauth-toolkit lib为OAuth访问委派生成access_token
和refresh_token
。我试图委托访问第三方平台,其中第三方平台显示登录按钮,当用户点击按钮,它会打开我的网站与response_type
,client_id
,scope
,和redirect_uri
.(所有这些变量将在设置时在第三方平台上设置)。
根据django-oauth-toolkit文档,我们还需要在打开登录链接时在url中传递code_challenge
和code_challenge_method
,但第三方平台不会在请求中传递这两个变量。
根据此文档,我尝试在项目的设置文件中设置PKCE_REQUIRED=False
,但在响应中得到code_challenge
的错误。
请求URL http://127.0.0.1:8000/o/authorize/?response_type=code&client_id=bG2Ju69XwS8jvnx3CWiobmWi1dj4kWsNYSiVsXEa&redirect_uri=http://127.0.0.1:8000/code/redirect/
响应http://127.0.0.1:8000/code/redirect/?error=invalid_request&error_description=Code+challenge+required.
身份验证功能使用URL中的code_challenge
,并能够生成authorization_code
工作示例
请求URL http://127.0.0.1:8000/o/authorize/?response_type=code&client_id=bG2Ju69XwS8jvnx3CWiobmWi1dj4kWsNYSiVsXEa&redirect_uri=http://127.0.0.1:8000/code/redirect/&code_challenge=yCo4U9wZJPeYGyX3F6df_heuxG-6ZnvZfZB5KrCYpp4&code_challenge_method=S256
响应http://127.0.0.1:8000/code/redirect/?code=EAwEXghF807RTjxwyohky8psQKGohP
我也尝试了设置文件中的OAUTH2_USE_PKCE = False
,但不起作用。
Thanks:)
1条答案
按热度按时间9o685dep1#
我通过在OAUTH2_PROVIDER dict中设置变量而不是直接在设置文件中设置来解决这个问题。