2014-05-15 57 views
0

我使用tastypie和python-social-auth管理我的社交身份驗證。 我沒有問題,這樣做通過Facebook認證如下:使用twitter進行身份驗證tastypie python社交身份驗證返回403

from social.apps.django_app import load_strategy 
provider = 「facebook」 
access_token = 「CAAIkpON595IBADC8CqXgq615wfsls15u6RI23sreqbzntau」 
strategy = load_strategy(backend=provider) 
user = strategy.backend.do_auth(access_token) 

但是當我嘗試做相同的提供商=「推特」和有效的訪問令牌,我一直呼籲的「do_auth」當得到403方法。 我設法捲曲到twitter api,所以我的憑據是有效的。

我錯過了在這方面的任何步驟?嘰嘰喳喳驗證應該是不同的Facebook的?

謝謝!

+0

你檢查redirect_uri屬性嗎?還要檢查錯誤代碼的響應情況。應該有一些額外的信息來解釋什麼是錯的。 – daniula

+0

這個過程現在不適用於Twitter,有一個問題可以在https://github.com/omab/python-social-auth/issues/272進行跟蹤,我需要設置一個時間來處理它。 – omab

回答

0

問題是我沒有在定義'load_strategy'時添加'redirect_uri'。 最後我結束了這段代碼:

# setup redirect uri in order to load strategy 
    uri = redirect_uri = "social:complete" 
    if uri and not uri.startswith('/'): 
     uri = reverse(redirect_uri, args=(backend,)) 

    # load the strategy 
    try: 
     strategy = load_strategy(
      request=request, backend=backend, 
      redirect_uri=uri, **kwargs 
     ) 
    except MissingBackend: 
     raise Http404('Backend not found') 

感謝@omab在GitHub的問題頁面評論這一點。

0

我正在使用register_by_access_token方法(我使用django作爲Angular應用程序的API)的示例。

在這個例子中,該行:

user = request.backend.do_auth(access_token) 

沒有與由Twitter收到的oauth_token Twitter的工作,得到它的工作我必須創建以下的access_token:

access_token = { 
       'oauth_token': auth[1], 
       'oauth_token_secret': auth[2] 
     } 

在哪裏auth [1]和[2]是twitter返回的值。

它很奇怪,因爲我沒有在任何地方發現這個記錄,我只是發現那些錯過了SOCIAL_AUTH_TWITTER_KEY和SOCIAL_AUTH_TWITTER_SECRET的人可以使用它。

fyi:我用它與Django休息框架

相關問題