2014-12-11 4 views
0

내 fb 캔버스 응용 프로그램에 사용자를 연결하려고했습니다.fb 캔버스에 장고 allauth 로그인

내 웹 사이트에 django-allauth fb 로그인을 구현했습니다. fb canvas 앱에서 사용자가 이미 fb에 연결되어 있기 때문에 이미 로그인 한 사용자를 얻으려고합니다.

django-allauth를 사용하여 만들 수있는 방법이 있습니까?

+0

자동으로 사용자를 인식해야한다고 생각합니다. ** request.user **에 무엇이 있습니까? – martincpt

+0

맞아요,하지만 요청을 받아 사용자를 얻으려면 요청해야합니다. 첫 번째 액세스에 따라 삽입 할 수 없습니다. 나는/accounts/facebook/login/endpoint라고 불러야 만한다. –

답변

0

대답은 예입니다.

이에 그냥 간단하게 설정하여 FB 캔버스 URL을이와

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

는 캔버스 앱 방문자는 allauth 페이스 북의 로그인 과정을 거쳐야합니다. 사용자가 앱에 연결 한 경우 설정에서 지정한 로그인 리디렉션 URL로 리디렉션됩니다. 그렇지 않으면 페이스 북 연결 허용을 요청할 것입니다.

+0

yap,하지만 이것은 GET 메서드이며, 캔버스 url로부터의 첫 번째 액세스는 POST 메서드입니다. 따라서이 URL을 전달할 수는 없습니다. –

+0

그러면 사용자가 인증되지 않은 경우이 URL로 리디렉션하지 마십시오. – martincpt

+0

작동하지 않습니다. 끝점을 호출하지만 콜백 응답을받지 못합니다. 나는 그것을 해킹 할 수 없다고 생각한다. 나는 fb 캔버스를 통해 얻은 #signed_request에 따라 모든 사용자를 생성하는 논리가 필요하다. –

0

한 가지 가능한 방법은 다음과 같습니다

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) 

당신은 결국이 문제에 대한 해결책을 찾았나요? 내가 제안한 솔루션보다 다른 솔루션을 찾으면 여기에서 공유 할 수 있다면 좋을 것입니다.