我使用python-social-auth
從我的Django應用程序的社交網絡登錄。在我的本地機器一切正常,但是當我部署到服務器我收到以下錯誤:python oauthlib:in escape ValueError「只有unicode對象可以被冒用」
oauthlib.oauth1.rfc5849.utils in escape
ValueError: Only unicode objects are escapable. Got None of type <type 'NoneType'>.
堆棧跟蹤:
File "django/core/handlers/base.py", line 112, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "social/apps/django_app/utils.py", line 45, in wrapper
return func(request, backend, *args, **kwargs)
File "social/apps/django_app/views.py", line 12, in auth
return do_auth(request.social_strategy, redirect_name=REDIRECT_FIELD_NAME)
File "social/actions.py", line 25, in do_auth
return strategy.start()
File "social/strategies/base.py", line 66, in start
return self.redirect(self.backend.auth_url())
File "social/backends/oauth.py", line 99, in auth_url
token = self.set_unauthorized_token()
File "social/backends/oauth.py", line 158, in set_unauthorized_token
token = self.unauthorized_token()
File "social/backends/oauth.py", line 177, in unauthorized_token
method=self.REQUEST_TOKEN_METHOD)
File "social/backends/base.py", line 202, in request
response = request(method, url, *args, **kwargs)
File "requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "requests/sessions.py", line 349, in request
prep = self.prepare_request(req)
File "requests/sessions.py", line 287, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "requests/models.py", line 291, in prepare
self.prepare_auth(auth, url)
File "requests/models.py", line 470, in prepare_auth
r = auth(self)
File "requests_oauthlib/oauth1_auth.py", line 87, in __call__
unicode(r.url), unicode(r.method), None, r.headers)
File "oauthlib/oauth1/rfc5849/__init__.py", line 293, in sign
request.oauth_params.append(('oauth_signature', self.get_oauth_signature(request)))
File "oauthlib/oauth1/rfc5849/__init__.py", line 128, in get_oauth_signature
uri, headers, body = self._render(request)
File "oauthlib/oauth1/rfc5849/__init__.py", line 199, in _render
headers = parameters.prepare_headers(request.oauth_params, request.headers, realm=realm)
File "oauthlib/oauth1/rfc5849/utils.py", line 31, in wrapper
return target(params, *args, **kwargs)
File "oauthlib/oauth1/rfc5849/parameters.py", line 57, in prepare_headers
escaped_value = utils.escape(value)
File "oauthlib/oauth1/rfc5849/utilsy", line 56, in escape
'Got %s of type %s.' % (u, type(u)))
一些軟件包從requirements.txt
文件:
Django==1.6.6
google-api-python-client==1.1
oauth2==1.5.211
oauthlib==0.6.3
python-openid==2.2.5
python-social-auth==0.1.26
requests==2.4.0
requests-oauthlib==0.4.1
six==1.7.3
Python版本您使用的?我懷疑是什麼原因造成的,但我不是100%確定的。 – 2014-09-11 12:14:29
@ sigmavirus24它是Python 2.7.6。在同一臺機器上,我有另一個使用''python-social-auth''的Django項目,它工作得很好。 – vero4ka 2014-09-11 12:33:02
我認爲這種差異可能出現在「locale」設置中,但考慮到你有不同的應用程序使用它,這是非常好奇的。我並不熟悉這些項目是有幫助的,但我會將請求-oauthlib的維護者指向此處以查看它們是否可以提供幫助。 – 2014-09-11 14:12:37