Facebook登录没有响应FB.login响应

时间:2012-06-18 09:51:25

标签: facebook

我正在使用facebook集成的android phonegap应用程序。 FB.login(函数(响应)函数有一个响应处理程序,它被调用时)  用户点击fb按钮,但它没有进入功能响应 或每次提醒('测试')。只有当我点击时它才进入这个脚本  约5或6次。我需要的是在我第一次登录Facebook时获取访问令牌。我已经经历了很多关于此的链接但是 无法找到一个确切的解决方案...

FB login callback function not responding if user is already logged in facebook

即使这个问题似乎也一样,但我无法弄清楚我的解决方案。

这是正在运行的代码:

<div id="data">Hello Facebooktesters, loading ...</div>

<button onclick="login()">Login</button>
<button onclick="me()">Me</button>
<button onclick="logout()">Logout</button>
<button onclick="Post()">facebookWallPost</button>

<script type="text/javascript">
    document.addEventListener('deviceready', function() {
        try {
            alert('Device is ready! Make sure you set your app_id below this alert.');
            FB.init({
                appId : "xxxxxxxxxxxxxxx",
                nativeInterface : CDV.FB,
                useCachedDialogs : false
            });
            document.getElementById('data').innerHTML = "FB init executed";
        } catch (e) {
            alert(e);
        }
    }, false);

    function me() {
        FB.api('/me/friends', {
            fields : 'id, name, picture'
        }, function(response) {
            if (response.error) {
                alert(JSON.stringify(response.error));
            } else {
                var data = document.getElementById('data');
                fdata = response.data;
                console.log("fdata: " + fdata);
                response.data.forEach(function(item) {
                    var d = document.createElement('div');
                    d.innerHTML = "<img src="+item.picture+"/>" + item.name;
                    data.appendChild(d);
                });
            }
            var friends = response.data;
            console.log(friends.length);
            for ( var k = 0; k < friends.length && k < 200; k++) {
                var friend = friends[k];
                var index = 1;

                friendIDs[k] = friend.id;
                //friendsInfo[k] = friend;
            }
            console.log("friendId's: " + friendIDs);
        });
    }

    function login() {
        FB.login(function(response) {
            alert('test');
            if (response.authResponse) {
                alert('logged in');
                var access_token =   FB.getAuthResponse()['accessToken'];
                alert(access_token);
                 window.location = "test.html"
            } else {
                alert('not logged in');
            }
        }, {
            scope : "email"
        });
    }

    function logout() {
        alert('test');
          FB.logout(function(response) {
              alert('logged out');
            //window.location.reload();
          });
    }

    function Post(ele) {
        var domain = 'http://192.168.0.46:8082/';
        console.log('Debug 1');
        var params = {
        method: 'feed',
        name: 'test - test',
        link: domain+'test/test/showproddetails.action?product.productId=1',
        picture: 'http://www.careersolutions.com/test.png',
        caption: 'test',
        description: 'test'
        };
        console.log(params);
        FB.ui(params, function(obj) { console.log(obj);});
    }

</script>

谢谢你, 拉吉

2 个答案:

答案 0 :(得分:0)

此行中缺少分号:

window.location = "test.html"

答案 1 :(得分:0)

此问题是在不久前发布的,但我想指出一些问题。 FB.login函数会打开一个弹出对话框,询问用户是否希望使用Facebook登录您的应用。通常建议在单击按钮后运行它,因为大多数浏览器会在页面加载时阻止弹出对话框。如果用户之前已经授权您的应用程序,则弹出对话框会重定向回您的应用程序并关闭对话框(假设您的应用程序是一个网站)。

如果您打算在页面加载时检查用户是否登录到您的应用,那么建议您改为使用FB.getLoginStatus方法

function checkLoginState() {
   FB.getLoginStatus(function(response) {
      // Check response.status to see if user is logged in
      alert(response.status);
   });
}

请参阅this extensive documentation on facebook

相关问题