【问题标题】:Display the Request dialog and then redirect显示请求对话框,然后重定向
【发布时间】:2012-10-09 06:38:45
【问题描述】:

当用户单击我网站上的 Facebook 登录按钮时,我正在使用 JS SDK 显示请求对话框。现在我想在用户发送邀请或取消请求对话框后重定向用户,以便我可以继续在站点中为他或她签名。

button = document.getElementById('fbc-login-button');
    button.onclick = function() {

        FB.getLoginStatus(function(response) {
            if (response.authResponse) {
                sendRequestViaMultiFriendSelector(response.authResponse.accessToken);
            }
            else {
                FB.login(function(response) {
                    if (response.authResponse) {
                        sendRequestViaMultiFriendSelector(response.authResponse.accessToken);
                    }}, {scope: 'email'});
            }

        });

    };

    function sendUserToLoginProcess(accessToken){
        var fb_signin_url = '<?php echo CustomLocal_Resource_Url_Process::userSignin() ?>?command=<?php echo CustomLocal_Logic_Customer_User::COMMAND_FB_SIGNIN ?>&url_redirect=<?php echo Custom_Resource_Url_Customer::main(); ?>&url_redirect_fail=<?php echo Custom_Resource_Url_Customer::signin(); ?>';
        this.location = fb_signin_url + '&token=' +  accessToken;
    };

    function sendRequestViaMultiFriendSelector(accessToken) {
        FB.ui({method: 'apprequests',
            message: 'My Great Request'
        }, sendUserToLoginProcess(accessToken));
    }

【问题讨论】:

  • 而你的实际问题是……?
  • 哈哈对不起,正如我所说的,我想重定向。所以在代码中有一个回调 sendUserToLoginProcess 函数。但是,当请求对话框加载到页面上时,这个会同时重定向。因此,用户没有机会邀请他/她的朋友,因为他/她正在被重定向。我希望在用户完成请求对话框或按对话框上的取消后进行重定向。我该怎么办?
  • 你上面代码的问题是/曾经,你没有使用sendUserToLoginProcess作为回调函数,而是直接执行。

标签: facebook redirect dialog


【解决方案1】:

所以我想设法用这段代码来获得它:

    button = document.getElementById('fbc-login-button');
    button.onclick = function() {

        FB.getLoginStatus(function(response) {
            if (response.authResponse) {
                sendRequestViaMultiFriendSelector(response.authResponse.accessToken);
            }
            else {
                FB.login(function(response) {
                    if (response.authResponse) {
                        sendRequestViaMultiFriendSelector(response.authResponse.accessToken);
                    }}, {scope: 'email'});
            }

        });

    };

    function sendUserToLoginProcess(accessToken){
        var fb_signin_url = '<?php echo CustomLocal_Resource_Url_Process::userSignin() ?>?command=<?php echo CustomLocal_Logic_Customer_User::COMMAND_FB_SIGNIN ?>&url_redirect=<?php echo Custom_Resource_Url_Customer::main(); ?>&url_redirect_fail=<?php echo Custom_Resource_Url_Customer::signin(); ?>';
        this.location = fb_signin_url + '&token=' +  accessToken;
    };

    function sendRequestViaMultiFriendSelector(accessToken) {
        FB.ui({method: 'apprequests',
            message: 'Shop with me!'
        }, 
        function(response)
        {
            sendUserToLoginProcess(accessToken)
        });
    }

我使用回调函数(response) 来触发 sendUserToLoginProcess(),然后继续重定向和登录用户。但我并没有真正使用响应变量,所以我希望没关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多