2

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

在 AuthResource 的 obj_create

  1. 使用 userName 查找用户。
  2. 如果用户存在。我将查找用户和 api 密钥。
  3. 如果没有找到用户,我会创建一个用户。

问题是我不知道

  1. 我应该使用什么 AuthResource 的身份验证?身份验证()或 APIkeyAuthentication()?
  2. 如何处理用户模型的密码属性?设置为NULL?
  3. 我的代码对吗?

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"
4

1 回答 1

0

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

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

于 2013-01-19T19:58:24.197 回答