我正在使用Django Social Auth连接Facebook问题,它完美无缺.我已经使用Django Rest Framework为我的django应用程序开发了一个API .但我对使用Django Social Auth和Django Rest Framework for ios设备感到困惑.我已经搜索1,2,3和4,但它们通常是具有角JS.我不熟悉ios开发.
facebook与spa和移动设备有什么不同?我怎么能一起使用这些包?我可以从django-social-auth迁移到python-social-auth吗?
提前致谢
有没有人一起使用django-social-auth,django-registration和django-profiles.他们一起工作得好吗?我已经建立了社交认证,但我在某处读到django-allauth更好.我应该切换到那个吗?
请指教
更新:
我已经allauth在我的项目中使用它并且工作正常.您不需要使用django-registrationallauth,因为它集成在内.但是,我使用自定义用户配置文件,这是一个比...更好的选择django-profiles.
在django-social-auth某些情况下,后端将引发一个ValueError(例如,当用户取消登录请求或用户尝试与已与其他用户关联的帐户关联时).如果用户遇到其中一种情况,他们将在您的网站上显示500错误.
那么,抓住这些最好的方法是什么?当发生这种情况时,我更愿意能够显示有用的消息(通过消息框架),但是我不知道最好的方法.
我正在考虑编写我自己的视图(在一个单独的应用程序中),只是包装social_auth的associate_complete视图,但这看起来很笨拙......任何想法?
我可以分叉django-social-auth并自定义这种行为,但我宁愿不维护一个单独的fork - 特别是因为我不能认为任何人都想以同样的方式处理这些异常.
我正在尝试使用Django-Social-Auth登录Facebook但是我收到此错误:
TypeError at /complete/facebook/
datetime.datetime(2014, 4, 25, 22, 20, 14, 665216, tzinfo=<UTC>) is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
这是我的登录模板:
<a href="{% url 'socialauth_begin' 'facebook' %}">Login with FB</a>
Run Code Online (Sandbox Code Playgroud)
我的设置:
SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'
SOCIAL_AUTH_UID_LENGTH = 16
SOCIAL_AUTH_ASSOCIATION_HANDLE_LENGTH = 16
SOCIAL_AUTH_NONCE_SERVER_URL_LENGTH = 16
SOCIAL_AUTH_ASSOCIATION_SERVER_URL_LENGTH = 16
SOCIAL_AUTH_ASSOCIATION_HANDLE_LENGTH = 16
SOCIAL_AUTH_ENABLED_BACKENDS = ('facebook')
Run Code Online (Sandbox Code Playgroud) django-social-auth /mypage#_=_在使用Facebook后端时重定向我.
当我在前端使用jquery mobile时,我无法接受.
我在facebook开发者网站上找到了:https://developers.facebook.com/blog/post/552/.
会话重定向行为的更改
本周,当此字段留空时,我们开始向redirect_uri添加片段#_ = _.请确保您的应用可以处理此行为.
因此,我尝试SOCIAL_AUTH_LOGIN_REDIRECT_URL将django-social-auth设置中的内容设置为"无空白".没运气
那么,如何摆脱哈希的事情呢?
非常感谢!
在我使用说Facebook(比如说fbuser)或谷歌(googleuser)创建用户之后.如果我通过正常的Django管理(normaluser)创建另一个用户,并尝试使用Facebook或谷歌,而第三个用户(normaluser)记录在再次登录时,会引发错误异常AuthAlreadyAssociated.
理想情况下,它应该抛出一个错误,称为您已经以用户normaluser身份登录.
或者它应该注销普通用户,并尝试与已经与FB或Google关联的帐户关联,视情况而定.
如何实现以上两个功能之一?欢迎所有建议.
此外,当我尝试自定义SOCIAL_AUTH_PIPELINE时,无法使用FB或Google登录,并强制登录URL/accounts/login /
我正在尝试使用Django Social Auth软件包与Twitter连接,但我很难理解如何做到这一点,因为我找不到任何例子.我假设这Django Social Auth是用于此目的的最佳包.
我看了几个使用Facebook的例子,并从中添加了以下内容到我的settings.py文件中:
AUTHENTICATION_BACKENDS = (
'social_auth.backends.twitter.TwitterBackend',
'django.contrib.auth.backends.ModelBackend',
)
# overwriting default templates
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.static',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.contrib.messages.context_processors.messages',
'social_auth.context_processors.social_auth_by_type_backends',
'django.contrib.auth.context_processors.auth',
)
SOCIAL_AUTH_ENABLED_BACKENDS = ('twitter')
SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'
# Social media login info:
TWITTER_CONSUMER_KEY = 'xxx'
TWITTER_CONSUMER_SECRET = 'xxxxxx'
# 'magic' settings
SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete'
SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'associate_complete'
SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
'social_auth.backends.pipeline.associate.associate_by_email',
'social_auth.backends.pipeline.misc.save_status_to_session',
'social.pipeline.redirect_to_form',
'social.pipeline.username',
'social_auth.backends.pipeline.user.create_user',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.social.load_extra_data',
'social_auth.backends.pipeline.user.update_user_details',
'social_auth.backends.pipeline.misc.save_status_to_session',
'social.pipeline.redirect_to_form2',
'social.pipeline.first_name',
)
SOCIAL_AUTH_FORCE_POST_DISCONNECT = True
SOCIAL_AUTH_SESSION_EXPIRATION = …Run Code Online (Sandbox Code Playgroud) 我正在使用 django 和 React 实现一个身份验证系统。这两个应用程序分别在端口 8000、3000 上运行。我使用 Djoser 包实现了身份验证系统。该包使用一些依赖项social_core和social_django。一切似乎都配置正常。我点击登录谷歌按钮...我被重定向到谷歌登录页面,然后返回到端口 3000 处的前端 React 应用程序,并在 url 上显示状态和代码参数。
此时,我将这些参数发布到后端。后端尝试使用以下代码验证状态检查会话存储中是否存在状态密钥(social_core/backends/oauth.py)
def validate_state(self):
"""Validate state value. Raises exception on error, returns state
value if valid."""
if not self.STATE_PARAMETER and not self.REDIRECT_STATE:
return None
state = self.get_session_state()
request_state = self.get_request_state()
if not request_state:
raise AuthMissingParameter(self, 'state')
elif not state:
raise AuthStateMissing(self, 'state')
elif not constant_time_compare(request_state, state):
raise AuthStateForbidden(self)
else:
return state
Run Code Online (Sandbox Code Playgroud)
此时,由于某些原因,状态会话密钥不存在......并且我收到一条错误,指出在会话数据中找不到状态(错误如下)
{"error":["State could not be found in server-side session data."],"status_code":400} …Run Code Online (Sandbox Code Playgroud) django django-socialauth django-rest-framework reactjs djoser
我正在添加一个系统,为下次登录时可以显示的用户留下"通知".我在models.py文件中创建了一个简单的Notification类.我有这个UserInfo类(在相同的models.py中)作为socialauth的一部分将一些属性添加到Django的现有用户系统:
class UserInfo(models.Model):
user = models.OneToOneField(User, unique=True)
...
reputation = models.IntegerField(null=True, blank=True)
def add_notification(message):
notification = Notification(user=self.user, message=message)
notification.save
Run Code Online (Sandbox Code Playgroud)
当我在控制台中尝试时,我最终得到了这个:
>>> user = User.objects.get(id=14)
>>> user.userinfo.add_notification('you are an awesome intern!')
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: add_notification() takes exactly 1 argument (2 given)
>>>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?我是一个Django noob,所以也许这很简单.谢谢!
我正在尝试使用Social-auth-app-django向网站添加社交媒体身份验证.
所以我为最受欢迎的社交媒体网站(Facebook,Twitter,Google +)创建了不同的应用程序,并在那里设置了回调网址.
但是,当我从Facebook重新定向回网站时,我遇到了一个错误:
Internal Server Error: /oauth/complete/facebook/
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner
response = get_response(request)
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.5/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_django/utils.py", line 50, in wrapper
return func(request, backend, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_django/views.py", line 32, …Run Code Online (Sandbox Code Playgroud)