Python Django allauth在fb画布上登录

Python Django allauth在fb画布上登录,python,django,angularjs,facebook,Python,Django,Angularjs,Facebook,我一直在尝试连接我的fb canvas应用程序上的用户 我已经在我的网站上实现了django allauth fb登录。在fb canvas应用程序中,我试图让用户作为已经登录的用户,因为用户已经连接到fb上 有没有办法用django allauth制作它?答案是肯定的 只需将您的fb canvas url设置为: https://yourdomain.com/your-allauth-url/facebook/login/?process=login 这样,您的canvas应用程序访问者将通过

我一直在尝试连接我的fb canvas应用程序上的用户

我已经在我的网站上实现了django allauth fb登录。在fb canvas应用程序中,我试图让用户作为已经登录的用户,因为用户已经连接到fb上

有没有办法用django allauth制作它?

答案是肯定的

只需将您的fb canvas url设置为:

https://yourdomain.com/your-allauth-url/facebook/login/?process=login


这样,您的canvas应用程序访问者将通过allauth facebook登录过程。如果用户已连接到你的应用程序,它会将他/她重定向到你在设置中指定的登录重定向url。否则它只会要求他允许facebook连接。

一种可能的方法是:

class FacebookCanvasLoginView(View):
    def post(self, request, *args, **kwargs):
        social_app = SocialApp.objects.filter(provider='facebook').first()
        signed_request = parse_signed_request(request.POST.get('signed_request'), str(social_app.secret))
        token = SocialToken(app=social_app, token=signed_request['oauth_token'])

        login = fb_complete_login(request, social_app, token)
        login.token = token
        login.state = SocialLogin.state_from_request(request)

        return complete_social_login(request, login)

你最终找到解决这个问题的办法了吗?如果您找到了我提出的解决方案以外的其他解决方案,如果您可以在此处共享,那将非常棒。

我认为它应该能够自动识别用户。您的请求中有什么。用户?是的,但我需要发出请求才能让用户加入请求。不能仅根据第一次访问将其嵌入。我必须调用/accounts/facebook/login/endpoint.yap,但这是GET方法,从canvas url访问的第一个方法是POST方法。所以,我不能只传递这个URL。那么,如果用户没有经过身份验证,为什么不重定向到这个URL呢?它不工作,它调用端点,但没有得到任何回调响应。我想我无法破解它,我需要一个逻辑来根据我通过fb canvas获得的签名请求创建任何用户。你能获得用户的访问令牌吗?我正在尝试实现它。通过signed_请求,我应该能够得到它,但我只是得到基本的signed_请求数据,没有用户id和oauth_令牌。