我正在构建一个 Django-tastypie 服务器来与移动客户端进行通信。为了登录 Django 服务器,用户必须首先在移动客户端登录他的 facebook 帐户。移动客户端获取 accessToken 和 facebook id 后,会将 AuthResouce 与 facebook_id(as userName) 和 accessToken 发布到 Django 服务器。
在 AuthResource 的 obj_create
- 使用 userName 查找用户。
- 如果用户存在。我将查找用户和 api 密钥。
- 如果没有找到用户,我会创建一个用户。
问题是我不知道
- 我应该使用什么 AuthResource 的身份验证?身份验证()或 APIkeyAuthentication()?
- 如何处理用户模型的密码属性?设置为NULL?
- 我的代码对吗?
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"