2

モバイルクライアントと通信するために Django-tastypie サーバーを構築しています。Django サーバーにログインするには、まずモバイル クライアントで Facebook アカウントにログインする必要があります。モバイル クライアントが accessToken と facebook ID を取得した後、AuthResouce を facebook_id (userName として) と accessToken と共に Django サーバーに送信します。

AuthResource の obj_create で

  1. userName でユーザーを検索します。
  2. ユーザーが存在する場合。ユーザーとAPIキーを調べます。
  3. ユーザーが見つからない場合は、ユーザーを作成します。

問題は私が知らないことです

  1. AuthResource の認証は何を使用すればよいですか? Authentication() または 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 に答える