标签: django-socialauth

如何在帐户关联后更新用户的"extra_data"?

我已成功设法将django-socialauth帐户(在本例中为instagram帐户)与现有用户帐户相关联.我还设置了我的管道以收集其​​他用户详细信息:

def update_social_auth(backend, details, response, social_user, uid, user,
                   *args, **kwargs):

    if getattr(backend, 'name', None) in ('instagram', 'tumblr'):
        social_user.extra_data['username'] = details.get('username')

    social_user.save()
Run Code Online (Sandbox Code Playgroud)

当帐户第一次关联时,这非常有用.但是,如果该帐户已经关联,则该username字段将不会出现在该字段中extra_data.

如何extra_data在关联完成后更新用户?有没有办法django-socialauth在不断开连接和重新连接或使用帐户(例如Instagram的)API的情况下执行此操作?

如果它有帮助,那么这是我目前的管道:

SOCIAL_AUTH_PIPELINE = (
    'social_auth.backends.pipeline.social.social_auth_user',
    'social_auth.backends.pipeline.social.associate_user',
    'social_auth.backends.pipeline.social.load_extra_data',
    'social_auth.backends.pipeline.user.update_user_details',
    'apps.utils.social.utils.update_social_auth'
)
Run Code Online (Sandbox Code Playgroud)

python django django-socialauth django-1.4

5
推荐指数
1
解决办法
319
查看次数

django-allauth和twitter集成 - 社交网络登录失败

我正在尝试与django-allauth合作.我按照github页面上的说明操作并完成以下操作:

  1. 在urls.py中添加了allauth网址

    urlpatterns += patterns ('',
        url('^accounts/', include('allauth.urls')),
        url('^accounts/profile/$', ProfileView.as_view(), name='ProfileView'),
        url('^login/$', login, name='account_login'),
        url('^logout/$', logout, name='account_logout'),
        url('^login/cancelled/$', login_cancelled, name='socialaccount_login_cancelled'),
        url('^login/error/$', login_error, name='socialaccount_login_error'),
    )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 更新了TEMPLATE_CONTEXT_DIRS,TEMPLATE_CONTEXT_PROCESSORS,AUTHENTICATION_BACKENDSINSTALLED_APPS.还添加了ACCOUNT_AUTHENTICATION_METHOD = "username_email"

  3. 在社交应用表中添加了Twitter的密钥和密钥.

  4. 将django-allauth模板复制到我的应用程序目录并进行修改.我可以看到所有的模板,做工精细喜欢/accounts/signup//accounts/social/connections/.

现在,当我点击Twitter链接时,从连接或注册/accounts/twitter/login/我最终得到以下错误:

社交网络登录失败

尝试通过您的社交网络帐户登录时出错.

我错过了什么吗?可能是一些愚蠢的错误(Twitter登录网址?没有线索!).我还试图找到一些基于最新代码库的教程但无法找到.github上的django-allauth示例没有任何帮助.请帮忙.另外,请随时根据最新的代码库向我提供任何链接或教程.

提前致谢.

django twitter django-socialauth twitter-oauth django-allauth

4
推荐指数
1
解决办法
3398
查看次数

Django社交auth GitHub身份验证

我是Python和Django的新手,我正在尝试使用社交认证(https://github.com/omab/django-social-auth).我想使用Github连接,但是没有取得多大成功,所提供的示例对于有人开始有点压倒性.是否有最新的教程可以解释如何使用最新版本的社交auth为初学者设置GitHub身份验证?

python django github django-socialauth

4
推荐指数
1
解决办法
3442
查看次数

使用django-social-auth(omab)自动刷新访问令牌

我目前正在使用django-social-auth管理oauth2注册google-oauth2以访问Google云端硬盘.我已经添加了对extra_arguments的离线访问.因此,Google会返回刷新令牌,并由django-social-auth存储.问题是django-social-auth从不使用此刷新令牌来更新访问令牌.因此,访问令牌在一小时后过期,我无法使用它来执行脱机请求.我想保持access_token有效24/7有效,这样我就可以让我的数据库与每个用户Google Drive同步.

GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'access_type':'offline'}
GOOGLE_OAUTH_EXTRA_SCOPE = ['https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile']

SOCIAL_AUTH_USER_MODEL = 'accounts.GoogleDriveUser'
SOCIAL_AUTH_EXTRA_DATA = True
SOCIAL_AUTH_SESSION_EXPIRATION = False
Run Code Online (Sandbox Code Playgroud)

有没有办法强制django-social auth在每次使用refresh_token到期时更新access_token.我很想看到如何解决这个问题的一个例子.

python django django-socialauth oauth-2.0 google-drive-api

4
推荐指数
1
解决办法
3862
查看次数

Django Social Auth:从linkedin,twitter和facebook收到电子邮件

我正在使用Django social_auth api通过社交帐户登录.在这里,我想从社交帐户获取电子邮件地址并将其存储在我的数据库表中.可以从帐户中检索名字和姓氏,但我无法检索电子邮件地址,个人资料图片.请分享您从社交帐户中检索这些详细信息的想法.

django django-socialauth

4
推荐指数
1
解决办法
1520
查看次数

Django中的python-social-auth自定义重定向url

我正在使用python-social-auth包和Django来管理oauth和openID登录.

现在的问题是,我可以在django中指定一个重定向url settings.py,但在某些情况下,我希望将用户重定向到他启动身份验证过程的同一页面.

例如:如果我的重定向网址是:/home/并且我当前在/products/product1我验证用户身份的页面中,那么我希望将用户重定向到/products/product1/而不是/home/

请帮我解决这个问题或至少一些详细介绍这个问题的材料.

提前致谢

django django-socialauth

4
推荐指数
2
解决办法
2998
查看次数

如何在模板中设置重定向URL?

我在Python 2.7.1下使用django-social-auth和Django 1.3.1.我一直在寻找各地,我无法弄清楚如何使用自定义重定向网址进行Twitter身份验证(或其他提供商).

我已经读过我需要在我的html模板中使用这个模板标签来构建启动过程的链接:

{% url socialauth_begin 'twitter' %}
Run Code Online (Sandbox Code Playgroud)

使用我的settings.py文件中的值可以相对正常LOGIN_REDIRECT_URL(虽然,请看我的问题:Twitter将用户带到/ en /登录/无论我的设置如何)但是,在这种特殊情况下,我需要重定向用户返回时的特殊URL.

我在其他地方读过我需要将带有重定向值的变量'next'传递给模板或作为twitter auth url上的参数传递.这是怎么做到的?我的模板作为HttpResponse加载,因此,虽然我当然可以传递模板值,但我不清楚如何在上面的模板标签中使用它们.

对不起这个基本问题.

django django-socialauth

3
推荐指数
1
解决办法
2468
查看次数

Django social-auth:从Facebook获取出生日期,地址和更多字段

我正在使用django-social-auth app进行社交日志记录.现在我想从Facebook获取更多信息,如dob,地址等等.在这个我尝试使用设置FACEBOOK_EXTENDED_PERMISSIONS,但它不适合我.请帮助我了解如何使用来自facebook,google和twitter的社交认证获取更多信息

提前致谢

Paritosh

django django-socialauth

3
推荐指数
1
解决办法
1684
查看次数

Django OAuth2错误:当提供client_id时,invalid_client和client_id = None

我正在使用django-social-auth为我的django项目进行谷歌应用认证.我从我的域名的Google api控制台获取了客户端ID和密钥.并在我的应用程序中插入值如下:

    **settings.py**

      MIDDLEWARE_CLASSES = (
      'social_auth.middleware.SocialAuthExceptionMiddleware',
      )

     LOGIN_URL = '/login/google-oauth2/'
     LOGIN_REDIRECT_URL = '/profile'
     LOGIN_ERROR_URL = '/login-error/'

     AUTHENTICATION_BACKENDS = (
      'social_auth.backends.google.GoogleOAuth2Backend',
      'django.contrib.auth.backends.ModelBackend',
     )

    TEMPLATE_CONTEXT_PROCESSORS = (
     "django.contrib.auth.context_processors.auth",
     "social_auth.context_processors.social_auth_by_type_backends",
    )

    SOCIAL_AUTH_ENABLED_BACKENDS = ('google',)
    SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'

    GOOGLE_OAUTH2_CLIENT_ID = '***.apps.googleusercontent.com'
    GOOGLE_OAUTH2_CLIENT_SECRET = '****'
    GOOGLE_WHITE_LISTED_DOMAINS = ['127.0.0.1:8000']

    SOCIAL_AUTH_COMPLETE_URL_NAME  = 'socialauth_complete'
    SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'
    SOCIAL_AUTH_RAISE_EXCEPTIONS = False
    SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'social_auth.utils.log_exceptions_to_messages'  

    INSTALLED_APPS = (
            'social_auth', )
Run Code Online (Sandbox Code Playgroud)

...

    **urls.py**

     from django.conf.urls import patterns, include, url
     from django.contrib import admin
     from django.views.generic import TemplateView
     from django.contrib.auth.views import …
Run Code Online (Sandbox Code Playgroud)

authentication django google-apps django-socialauth oauth-2.0

3
推荐指数
1
解决办法
2703
查看次数

django 社交登录中来自 GitHub 的用户电子邮件

我按照这篇文章在我的 django 应用程序中获取社交登录。它运行良好,但对于 github 用户,即使我添加,我也无法获取用户电子邮件

SOCIAL_AUTH_GITHUB_SCOPE = ['email']
Run Code Online (Sandbox Code Playgroud)

我应该在文章示例中更改哪些内容才能获取用户电子邮件?

python django django-socialauth github-api

3
推荐指数
1
解决办法
582
查看次数