Django 如何使用tastypie登录facebook?

Django 如何使用tastypie登录facebook?,django,tastypie,Django,Tastypie,我正在构建一个Django tastypie服务器来与移动客户端通信。为了登录Django服务器,用户必须首先在移动客户端登录他的facebook帐户。在移动客户端获得accessToken和facebook id后,它将使用facebook_id(作为用户名)和accessToken将AuthResource发布到Django服务器 在AuthResource的对象创建中 查找用户名为的用户 如果用户存在。我将查找用户和api密钥 如果找不到用户,我将创建一个用户 问题是我不知道 我应该使用什

我正在构建一个Django tastypie服务器来与移动客户端通信。为了登录Django服务器,用户必须首先在移动客户端登录他的facebook帐户。在移动客户端获得accessToken和facebook id后,它将使用facebook_id(作为用户名)和accessToken将AuthResource发布到Django服务器

在AuthResource的对象创建中

  • 查找用户名为的用户
  • 如果用户存在。我将查找用户和api密钥
  • 如果找不到用户,我将创建一个用户 问题是我不知道

  • 我应该使用什么样的AuthResource身份验证?身份验证()或ApikeyAuthentication()
  • 如何处理用户模型的密码属性?设置为空
  • 我的代码对吗
  • 您可以使用从移动客户端通过Facebook访问令牌登录到Django Tastypie服务器

    示例:

    请参见以下内容:
    
    class UserResource(ModelResource):
        def get_object_list(self, request, *args, **kwargs):
            return User.objects.filter(username=request.user.username)
    
        class Meta:
            queryset = User.objects.all()
            resource_name = 'auth/user'
            excludes = ['email']
            authentication = ApiKeyAuthentication()
            authorization = Authorization()
            models.signals.post_save.connect(create_api_key, sender=User)
    
        def determine_format(self, request):
            return "application/json"
    
    
    class AuthResource(ModelResource):
        class Meta:
            queryset = AuthInfo.objects.all()
            resource_name = "auth"
            authentication = Authentication()
            authorization = Authorization()
    
        def obj_create(self, bundle, **kwargs):
            userId, accessToken = bundle.data['userId'], bundle.data['accessToken']
            user = User.objects.filter(username=userId)
            if not user:
                user = User.objects.create_user(username=userId)
            else:
                bundle.obj = AuthInfo.objects.create_auth(userId, accessToken)
            return bundle
    
        def determine_format(self, request):
            return "application/json"