【问题标题】:django get the social token form allauthdjango 获取社交令牌形式 allauth
【发布时间】:2015-06-17 10:08:49
【问题描述】:

您好,我尝试从数据库中获取社交令牌,但出现此错误。 我找不到任何答案,并尝试了我能想到的一切。

如果有人知道如何解决这个问题,请。

NameError at /
name 'user' is not defined
Request Method: GET
Request URL:    http://localhost:3000/
Django Version: 1.8.2
Exception Type: NameError
Exception Value:    
name 'user' is not defined
Exception Location: /home/dk/user-new/just/fb/views.py in home, line 14
Python Executable:  /home/dk/user-new/bin/python
Python Version: 3.4.0
Python Path:    
['/home/dk/user-new/just',
 '/home/dk/user-new/lib/python3.4',
 '/home/dk/user-new/lib/python3.4/plat-x86_64-linux-gnu',
 '/home/dk/user-new/lib/python3.4/lib-dynload',
 '/usr/lib/python3.4',
 '/usr/lib/python3.4/plat-x86_64-linux-gnu',
 '/home/dk/user-new/lib/python3.4/site-packages']
Server time:    Wed, 17 Jun 2015 10:09:50 +0000






from django.shortcuts import render
import requests
from allauth.socialaccount import providers
from allauth.socialaccount.models import SocialLogin, SocialToken, SocialApp
from allauth.socialaccount.providers.facebook.views import fb_complete_login
from allauth.socialaccount.helpers import complete_social_login
import allauth.account


def home(request):

    access_token = SocialToken.objects.filter(user=user, account__provider='facebook')

更新:

我添加了一个指向 allauth 包模型的链接。

新的错误是:

AttributeError 在 / 类型对象“SocialLogin”没有属性“帐户”

def home(request):
    #user = request.user

        user = SocialLogin.account.user
        access_token = SocialToken.objects.filter(account=user,account__provider='facebook') 

https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/models.py

更新:

无法将 'QuerySet' 对象隐式转换为 str

access_token = SocialToken.objects.filter(account__user=request.user, account__provider='facebook') 
r = requests.get('https://graph.facebook.com/me?access_token='+access_token+'&fields=id,name,email') #MY_CORRECT_TOKEN&fields=id,name,email

【问题讨论】:

    标签: python django facebook


    【解决方案1】:

    您在使用之前没有定义 user 变量

    def home(request):
        #user = request.user
        access_token = SocialToken.objects.get(account__user=request.user, account__provider='facebook') #get instead of filter (you need only one object)
    
        r = requests.get('https://graph.facebook.com/me?access_token='+access_token.token+'&fields=id,name,email') #add access_token.token to your request
    

    【讨论】:

    • 谢谢,立即得到一个新错误“无法查询“daniel”:必须是“SocialAccount”实例。”
    • 所以将此标记为主题错误的答案并分享新错误。
    • 对不起,我是新来的,我该怎么办?
    • 您可以添加新错误,无论是编辑您的帖子还是在此处添加评论
    • 试试这个:access_token = SocialToken.objects.filter(account__user=request.user, account__provider='facebook')
    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 2014-11-09
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多