FB.getLoginStatus()没有触发

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

目前FB.getLoginStatus在Facebook更改新SDK和OAuth 2.0之后根本没有解雇。我们曾经在FB.getLoginStatus中获取响应并调用我们的回调函数,而后者又将用户重定向到我们的facebook应用程序。

请帮忙。

代码片段 -

FB.init({
        appId: '<%=ConfigurationManager.AppSettings["APIKey"]%>', // App ID
        //channelURL: 'xd_receiver.htm', // Channel File
        status: true, // check login status
        cookie: true, // enable cookies to allow the server to access the session
        oauth: true // enable OAuth 2.0
        //xfbml: true  // parse XFBML
    });
update_user_is_connected();
function update_user_is_connected() 
{
    FB.getLoginStatus(function(response) 
    {
        callback();
            });
}

function callback() {
    var fbURL = "http://apps.facebook.com/" + '<%=Suffix%>' + "/MyPage.aspx";
    eval("parent.location='" + fbURL + "'");

}

现在FB.getLoginStatus无效。

此致,KK

facebook-javascript-sdk oauth-2.0
6个回答
4
投票

我有同样的问题并通过添加true作为第二个参数来修复它:

FB.getLoginStatus(function(response)  {
         callback();
    },
    true);

这会禁用缓存并强制重新加载。见the docs


2
投票

在尝试检查用户是否已在页面完成加载后已经使用Facebook登录时遇到此错误。

如果您正在尝试这样做,您需要等待facebook sdk完成加载,在FB.init()之后调用checkLoginState()中的window.fbAsyncInit方法。


0
投票

这段代码非常适合我检查登录状态并请求登录并获取基于Java脚本SDK的oauth信息(名称,用户ID,令牌......)。

我有一些建议,您必须确保您的应用程序和频道文件应位于您在Facebook应用程序设置中设置的域中。

还要确保在代码中有div fb-root:

<div id="fb-root"></div>

如下图所示希望这可能会有所帮助......

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test Page</title>
    <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
</head>
<body>
    <div id="fb-root"></div>
    <script type="text/javascript">

        window.fbAsyncInit = function() {
            FB.init({
                appId      : 'xxxxxxxxxxxxx', // App ID
                channelUrl : 'https://xxxxxxxxxxxxx/channel.html',
                status     : true,
                cookie     : true,
                xfbml      : true,
                oauth      : true
            });

                var token = "";
                var userId = "";

                FB.getLoginStatus(function(response) {  // Get Login Status

                    if (response && response.authResponse) { // Check if User is Logged In

                        var token = response.authResponse.accessToken; // Get Token
                        var userId = response.authResponse.userID;     // Get User ID

                    } else {
                        //  alert("Not Auhtenticated");
                        FB.login(function(response) { // Promot User to Authenticate App
                            if (response && response.authResponse) {
                                var token = response.authResponse.accessToken;
                                var userId = response.authResponse.userID;
                            }
                        }, {scope: 'user_likes,friends_likes,publish_stream,read_friendlists,offline_access'}); // Scopes Example...
                    }
                });
            };

            //Load asynchronously
            (function(d, s, id) {
                var js, fjs = d.getElementsByTagName(s)[0];
                if (d.getElementById(id)) return;
                js = d.createElement(s); js.id = id;
                js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=xxxxxxxxxxx";
                fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk'));

    </script>
</body>


0
投票

我的问题在于window.fbAsyncInit功能。

FB.init({
  appId      : '321677491886687',
  cookie     : true,
  xfbml      : true,
  version    : '3.2'
});

我需要将3.2改为v3.2


-1
投票

卡迈勒

我相信你可以通过更换来解决你的问题

FB.getLoginStatus(function(response) 
{
    callback();
        });

FB.Event.Subscribe('auth.login', callback());

问候


-2
投票

确保你的所有网址都是正确的,我在本地运行时遇到了同样的问题,但网站URL指向生产网站,一旦我更正了这一点,getLoginStatus就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.