0

このコードを作成しましたが、既に Facebook にログインしている場合にのみ機能します。それ以外の場合は、Facebook にログインするために電子メールとパスワードを要求するポップアップ ウィンドウが表示されます。

これはコードです:

window.fbAsyncInit = function () {
    FB.init({
        appId: 'xxx',
        frictionlessRequests: true,
        status: true,
        cookie: true,
        xfbml: true,
        oauth: true
    });

    function update(response) {
        if (response.authResponse) {
            FB.api('/me', function (info) {
                login(response, info);
            });

        } else {

        }
    }

    FB.getLoginStatus(update);
};
(function () {
    var e = document.createElement('script');
    e.async = true;
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());


function login(response, info) {
    if (response.authResponse) {
        publish();
    }
}

function publish() {
    var publish = {
        method: 'feed',
        access_token: '<?php echo $token; ?>',
        message: 'How are you ?',
        name: 'hi friends',
        caption: 'yuhuuuuuuuu',
        description: (' '),
        link: 'http://www.example.com',
        picture: 'http://cdn1.hark.com/images/000/004/514/4514/original.jpg',
        actions: [{
            name: 'Hello',
            link: 'http://www.example.com/'
        }],
        user_message_prompt: 'Share on facebook'
    };

    FB.ui(
    publish, function (response) {
        if (response && response.post_id) {
            alert('Post was published.');

        } else {
            alert('Post was not published.');
        }
    });
}
4

1 に答える 1

0

updateメソッドでは、空白でFB.loginメソッドelseを呼び出す必要があります。

FB.loginを呼び出すと、ユーザーはOAuthダイアログを使用してアプリケーションを認証するように求められます。

ただし、これを行うことはできません。

function update(response) {
    if (response.authResponse) {
        FB.api('/me', function (info) {
        login(response, info);
        });

    } else {
        FB.login(function(response) {
            if (response.authResponse) {
                console.log("user is logged in!", response.authResponse);
            }
        });
    }
}

ドキュメントに記載されているように:

FB.loginを呼び出すと、JSSDKがポップアップウィンドウを開こうとします。そのため、このメソッドはユーザーのクリックイベントの後にのみ呼び出す必要があります。そうしないと、ほとんどのブラウザでポップアップウィンドウがブロックされます。

ログインするにはクリックするように指示するボタンなどをユーザーに表示する必要があります。その後、FB.loginメソッドを呼び出すことができます。

于 2012-06-16T10:36:49.963 に答える