Facebook登录-登录后无重定向

问题描述 投票:0回答:2

我正在实现facebook登录按钮,并且成功登录后,没有重定向,我正在尝试重定向到同一页面,并且该页面不会重新加载。

我的框架代码(在这里不运行任何功能,我只对重定向感兴趣):

<div id="fb-root"></div>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v6.0&appId=881911462250499&autoLogAppEvents=1"></script>

<script>
window.fbAsyncInit = function() {



 FB.init({
      appId      : 'my id',
      cookie     : true,                     // Enable cookies to allow the server to access the session.
      xfbml      : true,                     // Parse social plugins on this webpage.
      version    : 'v6.0'           // Use this Graph API version for this call.
    });

FB.getLoginStatus(function(response) {

                   FB.api('/me', { locale: 'tr_TR', fields: 'email,name' }, function (response) {

                    });
});

}
</script>

我确实在这里的Facebook开发人员上设置了有效的OAuth重定向URI:

enter image description here

成功登录后手动刷新页面时,可以看到我已经登录并且有令牌。单击按钮并登录后,它似乎没有重定向。可能是什么原因?

javascript facebook-login
2个回答
0
投票

我想如果登录成功,您可以使用JavaScript刷新当前页面。试试:

location.reload();

0
投票

OAuth重定向URL将在您手动bulid a login flow时调用。

实现Facebook登录的最简单,最快的方法是使用我们针对JavaScript,iOS和Android的官方SDK。我们建议您遵循针对这些平台的单独指南。

但是,如果您需要为应用程序不使用我们的SDK]实现基于浏览器的登录,例如在本地桌面应用程序(例如Windows 8)的Web视图中,或者完全使用服务器的登录流程,边码,您可以构建一个使用浏览器重定向为您自己的登录流程

如果使用的是FB登录按钮,则为callback function will be called instead

加载网页时的第一步是确定某个人是否已经使用Facebook Login登录到您的网页。调用FB.getLoginStatus将启动对Facebook的调用以获取登录状态。 然后Facebook用结果调用您的回调函数。

如果要使用FB登录按钮,则可以执行以下操作:

javascript

FB.getLoginStatus(response => {
    if (response.status === 'connected') {
        const uid = response.authResponse.userID;
        const accessToken = response.authResponse.accessToken;
        FB.api('/me', { locale: 'tr_TR', fields: 'email,name' }, response => {
            // if you're using jQuery
            $.post(
                "https://your.server/loginEndpoint",
                {
                    provider: 'facebook',
                    uid,
                    accessToken,
                    email,
                    // name
                }, response => {
                    if (response.success) {
                        location.href = "https://your.site/landing-page"
                    }
                }
            )
            // if you using Axios
            Axios.post("https://your.server/loginEndpoint", {
                    provider: 'facebook',
                    uid,
                    accessToken,
                    email,
                    // name
            }).then(response => {
                if (response.success) {
                    location.href = "https://your.site/landing-page"
                }
            });
        });
    }
})

服务器端(伪代码)

provider = request.provider
uid = request.uid
email = request.email
user = db.findBySocialID(provider, uid, email)

if (user) {
    login(user)
    response.send(success: true)
} else {
    response.send(success: false)
}
© www.soinside.com 2019 - 2024. All rights reserved.