2017-04-08 52 views
0

我正在使用django-rest-social-auth包來允許用戶在我的Django休息應用程序中進行身份驗證。我能夠從facebook爲用戶檢索令牌。現在,我不知道如何使用該令牌。我試圖訪問需要登錄用戶的端點,但我在調試時只能看到匿名用戶的訪問。我一直在谷歌這個問題,並嘗試了很多不同的方法(不同的餅乾,網址參數等)。Django rest_social_auth登錄。如何處理Facebook令牌?

這是我的具體情況:

views.py

@login_required 
def home(request): 
    return render(request, 'home.html') 

我得到我的令牌調用http://localhost:8000/api/login/social/token/(我是繼django-rest-social-auth自述),它看起來像:

{"token": "4571b2dce1f3abec34b28a4c7bd981c248a30698"} 

我有與我的用戶鏈接的令牌,我可以在我的管理員(主頁>身份驗證令牌>令牌)中看到它

如果我刪除@login_required我可以無任何問題地訪問家庭。我如何通過郵遞員發送請求來使用我的令牌訪問該資源?

回答

0

一些研究中,我發現了一個解決方案之後。有2個方面的考慮這裏:

  • Django的需要許可和認證課程

我views.py現在看起來是這樣的:

class AuthDetailView(BaseDetailView): 
    authentication_classes = (TokenAuthentication,) 
    permission_classes = IsAuthenticated, 
    def get(self, request): 
     return render(request, 'home.html') 

請注意,我沒有@login_required了。

  • 的Django喜歡在它的前面有一個「令牌」的授權頭而不是一個「承載」

當我做我的API的調用,權威性頭應該像Authorization: Token 4571b2dce1f3abec34b28a4c7bd981c248a30698代替Authorization: Bearer 4571b2d...

在此更改之後,request.user會自動綁定到之前鏈接到上述令牌的用戶。

1

添加Authorization: Bearer 4571b2dce1f3abec34b28a4c7bd981c248a30698的頭,如下圖所示:

enter image description here

+0

我試過這種方式,並沒有工作。我嘗試了頭文件'Application-Authorization:4571b2dce1f3abec34b28a4c7bd981c248a30698',但沒有任何結果。老實說,我不知道我在做什麼錯... – mcamacho