python-social-auth + 移动应用

2 投票
1 回答
2771 浏览
提问于 2025-04-18 11:12

我有一个Django应用程序,我为移动应用创建了API。在用户认证方面,我简单地获取登录名和密码,然后进行标准的Django登录操作。当用户登录后,我会生成一个令牌,保存它,并提供给移动应用。

现在谈到Facebook,我想使用python-social-auth这个库。我知道如何在标准网页上实现这个功能,这真的很简单。但我不知道如何将它整合到我的移动API中,以及如何在其中处理我的令牌。

我在想……有没有可能通过编程的方式进行认证,这样我就可以创建一个API方法,从那里调用社交认证的功能?但是,Facebook那边的“允许XY应用访问你的个人资料”页面该怎么处理呢?

任何建议都很有帮助。提前谢谢你。

1 个回答

5

这段说明告诉我们,如何通过提供一个叫做 access_token 的东西来验证身份或者创建用户。你可以在这个文档里找到详细的步骤。

from django.contrib.auth import login

from social.apps.django_app.utils import psa

# Define an URL entry to point to this view, call it passing the
# access_token parameter like ?access_token=<token>. The URL entry must
# contain the backend, like this:
#
#   url(r'^register-by-token/(?P<backend>[^/]+)/$',
#       'register_by_access_token')

@psa('social:complete')
def register_by_access_token(request, backend):
    # This view expects an access_token GET parameter, if it's needed,
    # request.backend and request.strategy will be loaded with the current
    # backend and strategy.
    token = request.GET.get('access_token')
    user = request.backend.do_auth(request.GET.get('access_token'))
    if user:
        login(request, user)
        return 'OK'
    else:
        return 'ERROR'

撰写回答