django)request.post方法给我错误:querydict对象无法call



我正在尝试将社交登录添加到我的django-rest-framework应用程序中,但是我遇到了这个问题,需要一些帮助。

登录流量:请求代码(get( ->响应 -> 请求令牌(post((此部分是我卡住的位置( -> wendesp

API参考

所以,在我登录社交帐户后(例如Facebook(单击授权我的应用按钮,我将获得这样的访问代码:

@api_view(['GET', 'POST'])
def kakao_login(request):
    # Extracting 'code' from received url
    my_code = request.GET["code"]
    request.session['my_code'] = my_code
    return HttpResponseRedirect(reverse('kakao_auth_code'))
    # This makes me redirect to 'kakao_auth_code' url

之后,我应该使用我从上方获得的用户_Code要求token

根据API文档,我应该使用这样的POST方法。

curl -v -X POST https://kauth.kakao.com/oauth/token 
 -d 'grant_type=authorization_code' 
 -d 'client_id={app_key}' 
 -d 'redirect_uri={redirect_uri}' 
 -d 'code={authorize_code}'

所以我像以下几个:

一样实现了我的代码
@api_view(['GET', 'POST'])
def kakao_auth_code(request):
    my_code = request.session.get('my_code')
    try:
        del request.session['my_code']
    except KeyError:
        pass
    request.POST(grant_type = 'authorization_code', client_id = '428122a9ab5aa0e8    140ab61eb8dde36c', redirect_uri = 'accounts/kakao/login/callback/', code = my_code)
    return HttpResponseRedirect('/')

,但是,我在request.POST(...)线路上遇到了此错误。

'querydict'对象不可callable

我只是不知道如何在request.POST()上解决此问题。任何帮助都将不胜感激。

您可以使用名为 requests 的第三方库来调用位于django项目之外的API:

import requests
def kakao_auth_code(request):
   ...
   data = dict(grant_type = 'authorization_code', client_id = '428122a9ab5aa0e8    140ab61eb8dde36c', redirect_uri = 'accounts/kakao/login/callback/', code = my_code)
   response = requests.post('https://kauth.kakao.com/oauth/token', data=data)
   if response.status_code == 200:
      token = response.json().get('access_token')

相关内容

  • 没有找到相关文章

最新更新