【问题标题】:Callback from External OAUTH in Django来自 Django 中外部 OAUTH 的回调
【发布时间】:2015-10-28 19:53:00
【问题描述】:

好的。设置信息 - Django 1.8.3,Python 2.7.3,使用 Goodreads 0.2.4 api handler for Python(稍作修改)。我正处于 Goodreads 对应用程序进行回调的地步,但 clickjacker 中间件将其作为错误捕获并抛出 404。如果我禁用 clickjacker 预防(我不想这样做),我得到“类型 'type' 的参数不可迭代”错误。

相关代码:

from goodreads import client

grClient = client.GoodreadsClient(<key>,<other_key>)

def goodReadsOAUTH_stage1(request,user):
    try:
       return HttpResponseRedirect(grClient.authenticate()) 
       # function modified to return the URL rather than open a browser
    except keyError:
        return Http404

def goodReadsOAUTH_stage2(request):
    if request.method == "GET":
        if request.GET['authorize'] == 1:
            grRecord = goodreadsOAUTHKeys(request.user,request.GET['oauth_token']
            grRecord.save()
            grClient.session.oauth_finalize()
            return HttpResponseRedirect(reverse(request,'workroom:profile',kwargs={'user':request.user.username}))
        else:
            return Http404
    else:
        return Http404

以及两者的 URLconf:

    url(r'^social/(?P<user>[-\w\d]+)/goodreads/OAUTH/$', views.goodReadsOAUTH_stage1, name='goodreads-oauth-one'),
    url(r'^social/goodreads/OAUTH/validation/$', views.goodReadsOAUTH_stage2, name='goodreads-oauth-two'),

以及随之而来的错误信息!

类型对象'Http404'没有属性'get'

异常位置:/home/.../public/env/local/lib/python2.7/site-packages/django/middleware/clickjacking.py in process_response,第 31 行

还有来自点击劫持保护的那一行代码:

 if response.get('X-Frame-Options', None) is not None:

我基本上不知道如何让回调正常运行。

【问题讨论】:

    标签: python django oauth


    【解决方案1】:

    您使用的 Http404 错误。 Http404 是一个异常,像这样使用它

    raise Http404("Poll does not exist")
    

    参考see“返回错误”部分

    【讨论】:

    • 谢谢!这让我遇到了对调试有意义的错误。
    猜你喜欢
    • 1970-01-01
    • 2022-08-11
    • 2011-11-19
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2019-05-31
    相关资源
    最近更新 更多