モバイルクライアントと通信するために Django-tastypie サーバーを構築しています。Django サーバーにログインするには、まずモバイル クライアントで Facebook アカウントにログインする必要があります。モバイル クライアントが accessToken と facebook ID を取得した後、AuthResouce を facebook_id (userName として) と accessToken と共に Django サーバーに送信します。
AuthResource の obj_create で
- userName でユーザーを検索します。
- ユーザーが存在する場合。ユーザーとAPIキーを調べます。
- ユーザーが見つからない場合は、ユーザーを作成します。
問題は私が知らないことです
- AuthResource の認証は何を使用すればよいですか? Authentication() または 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"