Python 在django应用程序中设置facebook登录的回拨url

Python 在django应用程序中设置facebook登录的回拨url,python,django,facebook,facebook-graph-api,Python,Django,Facebook,Facebook Graph Api,我创建了一个django应用程序,它也有一个facebook登录选项。为了做到这一点,我遵循了这个链接。我做了链接上所说的一切,我正在让用户登录facebook connect。但是,当用户从“registrationForm”(FB登录按钮)页面登录后,会弹出outh页面,输入用户名和密码。当给它时,用户已登录,但相同的注册表单再次出现,而不重定向页面。在FB登录成功后,有人能帮我设置一个回调url吗。对于FB connect,我使用的代码与上述站点中给出的代码相同 facebookconne

我创建了一个django应用程序,它也有一个facebook登录选项。为了做到这一点,我遵循了这个链接。我做了链接上所说的一切,我正在让用户登录facebook connect。但是,当用户从“registrationForm”(FB登录按钮)页面登录后,会弹出outh页面,输入用户名和密码。当给它时,用户已登录,但相同的注册表单再次出现,而不重定向页面。在FB登录成功后,有人能帮我设置一个回调url吗。对于FB connect,我使用的代码与上述站点中给出的代码相同

facebookconnect.py

class FacebookScriptNode(template.Node):
        def render(self, context):
            return """
            <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>

            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

            <script type="text/javascript"> FB.init("%s", "%s");
                function facebook_onlogin() {
                    var uid = FB.Facebook.apiClient.get_session().uid;
                    var session_key = FB.Facebook.apiClient.get_session().session_key;
                    var expires = FB.Facebook.apiClient.get_session().expires;
                    var secret = FB.Facebook.apiClient.get_session().secret;
                    var sig = FB.Facebook.apiClient.get_session().sig;

                    fb_connect_ajax(expires, session_key, secret, uid, sig);

                }

                function fb_connect_ajax(expires, session_key, ss, user, sig) {

                    var post_string = 'expires=' + expires;
                    post_string = post_string + '&session_key=' + session_key;
                    post_string = post_string + '&ss=' + ss;
                    post_string = post_string + '&user=' + user;
                    post_string = post_string + '&sig=' + sig;

                    $.ajax({
                        type: "POST",
                        url: "%s",
                        data: post_string,
                        success: function(msg) {
                            window.location = '%s'; //.reload()
                        }
                    });
                } 
            </script>       
            """ % (settings.FACEBOOK_API_KEY, reverse('xd_receiver'), reverse('facebook_connect_ajax'), settings.LOGIN_REDIRECT_URL)


def facebook_connect_script(parser, token): return FacebookScriptNode()

register.tag(facebook_connect_script)

class FacebookLoginNode(template.Node):
    def render(self, context): 
        return "<fb:login-button onlogin='facebook_onlogin();'></fb:login-button>"

def facebook_connect_login_button(parser, token): return FacebookLoginNode()

register.tag(facebook_connect_login_button)
def login_facebook_connect(request):
    status = 'unknown failure'
    try:
        expires = request.POST['expires']
        ss = request.POST['ss']
        session_key = request.POST['session_key']
        user = request.POST['user']
        sig = request.POST['sig']

        pre_hash_string = "expires=%ssession_key=%sss=%suser=%s%s" % (
            expires,
            session_key,
            ss,
            user,
            settings.FACEBOOK_APPLICATION_SECRET,
        )
        post_hash_string = hashlib.new('md5')
        post_hash_string.update(pre_hash_string)
        if post_hash_string.hexdigest() == sig:
            try:
                fb = FacebookUser.objects.get(facebook_id=user)
                status = "logged in existing user"
            except FacebookUser.DoesNotExist:
                contrib_user = User()
                contrib_user.save()
                contrib_user.username = u"fbuser_%s" % contrib_user.id

                fb = FacebookUser()
                fb.facebook_id = user
                fb.contrib_user = contrib_user

                temp = hashlib.new('sha1')
                temp.update(str(datetime.datetime.now()))
                password = temp.hexdigest()

                contrib_user.set_password(password)
                fb.contrib_password = password
                fb.save()
                contrib_user.save()
                status = "created new user"

            authenticated_user = auth.authenticate(
                                         username=fb.contrib_user.username, 
                                         password=fb.contrib_password)
            auth.login(request, authenticated_user)
        else:
            status = 'wrong hash sig'

            logging.debug("FBConnect: user %s with exit status %s" % (user, status))

    except Exception, e:
        logging.debug("Exception thrown in the FBConnect ajax call: %s" % e)

    return HttpResponse("%s" % status)

def xd_receiver(request):
        return render_to_response('xd_receiver.html')
在settings.py中

LOGIN_REDIRECT_URL = '/forgotPassword/'
html登录部分[registrationForm]

<p>Login via facebook!</p>

{% load facebookconnect %}
{% facebook_connect_login_button %}

{% facebook_connect_script %}
通过facebook登录

{%load facebookconnect%} {%facebook\连接\登录\按钮%} {%facebook\u连接\u脚本%}
我让它工作了..回拨url是在facebook应用程序设置中设置的