首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IndexError:列表索引超出范围,django-allauth

IndexError:列表索引超出范围,django-allauth
EN

Stack Overflow用户
提问于 2018-01-09 10:50:19
回答 1查看 202关注 0票数 0

我想做什么?

我正在尝试从社会账户中获取数据。为此,我正在跟踪站点。

有什么问题?

在成功登录到我的facebook帐户后,我收到了以下错误:

错误IndexError at /accounts/facebook/login/callback/

list index out of range

我在网上查了一下,看到了的帖子,并试图实现它,但这给了我一个keyerror 'user'

我的代码:

adaptar.py

代码语言:javascript
运行
复制
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from allauth.socialaccount.models import SocialAccount

class CustomAdapter(DefaultSocialAccountAdapter):

   def pre_social_login(self, request, sociallogin):
      account_uid = SocialAccount.objects.filter(user_id=request.user.id, provider='facebook')
      print account_uid[0].extra_data['first_name']

settings.py:

代码语言:javascript
运行
复制
SOCIALACCOUNT_ADAPTER = 'Authentication.adapter.CustomAdapter' 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 14:56:13

终于找到了解决方案:

我没有使用SocialAccount模型获取用户数据,而是使用传递的参数sociallogin获取用户数据,如下所示:

解决方案:

adaptar.py:

代码语言:javascript
运行
复制
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter

class CustomAdapter(DefaultSocialAccountAdapter):   
      def pre_social_login(self, request, sociallogin):
         if sociallogin.account.provider == 'facebook':
            first_name = sociallogin.account.extra_data['first_name'] 
            print first_name 

改变了这一点:

代码语言:javascript
运行
复制
 account_uid = SocialAccount.objects.filter(user_id=request.user.id, provider='facebook')

to此文:

代码语言:javascript
运行
复制
if sociallogin.account.provider == 'facebook':
   first_name = sociallogin.account.extra_data['first_name']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48166506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档