如何使用tastypie登录facebook?

时间:2012-11-12 18:25:08

标签: django tastypie

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

在AuthResource的obj_create

  1. 使用userName查找用户。
  2. 如果用户存在。我会查找用户和api密钥。
  3. 如果找不到用户,我会创建一个用户。
  4. 问题是我不知道

    1. 我应该使用AuthResource的身份验证? Authentication()或ApikeyAuthentication()?
    2. 如何处理用户模型的密码属性?设置为NULL?
    3. 是我的代码吗?
    4. 
      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"
      

1 个答案:

答案 0 :(得分:0)

您可以使用django-facebook通过移动客户端的Facebook访问令牌登录Django-Tastypie服务器。

示例:https://gist.github.com/4574656