5

私は、Facebook と統合された Android phonegap アプリケーションに取り組んでいます。FB.login(function(response) 関数には、ユーザーが fb ボタンをクリックしたときに呼び出される応答ハンドラーがありますが、毎回関数の応答またはアラート ('test') に入るわけではありません。約 5 ~ 6 回ヒットします。必要なのは、Facebook に初めてログインしたときにアクセス トークンをフェッチすることです。これに関する多くのリンクを調べましたが、これに対する正確な解決策が見つかりません...

ユーザーがすでに Facebook にログインしている場合、FB ログイン コールバック関数が応答しない

この質問でも同じようですが、解決策がわかりません。

これは動作しているコードです:

<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>

ありがとう、ラージ

4

2 に答える 2

0

この行にセミコロンがありません:

window.location = "test.html"

于 2012-06-19T06:07:41.717 に答える