3

キオスクスタンドで使用する非常に小さなウェブページを作成しています。目標は、タッチスクリーンを使用して、場所にあるFacebookページを「いいね」できるようにすることです。

ユーザーはページを高く評価するために最初にログインする必要があるため、Facebookは通常のログインポップアップを表示します。これは魅力のように機能します。ユーザーがログインすると、ページが高く評価され([いいね]ボタンをクリックしたため)、ユーザーは再度ログアウトする必要があります(誰も公共のコンピューターにログインしたくないため)。その後、ページをリロードする必要があります。

これは、FacebookのJavascriptAPIで可能になりました。ユーザーがページを気に入ったときに関数を呼び出すイベントリスナーがあります。そのイベントがトリガーされたときにFB.logout()を呼び出す必要があります:)。

残念ながら、それは私のために働いていません。私は非常に愚かである可能性があります、またはFacebookAPIがバグを抱えています。

私のコード:

window.fbAsyncInit = function() {
    FB.Event.subscribe('edge.create', function(response) {
        FB.logout(function(response) {
            window.location.reload();
        });
    });
}

しかし、これは機能しません。問題はFacebookのログイン部分にあると思います。

誰かがこれを経験したことがありますか?とてもシンプルなはずですが、うまくいきません...

私が試したいくつかのこと:

  • 通常のログインを促す-可能ですが、アプリがいくつかの情報にアクセスする必要があると表示されます。本当に私がやりたいのは、ユーザーにページを気に入ってもらうことだけです。

  • setTimeout loop-これを試しましたが、Facebookログインが私のページでJavascript全体を停止しているように見えますか?

編集:人々が自分の資格情報を公共のコンピューターに挿入することは悪い考えであることを私は知っていますが、顧客はそれをこのように望んでいます。FacebookページにリンクするQRコードもありますが、それでは私の問題は解決しません:)。

TL; DR:「いいね」ボタンからのFacebook Javascriptコールバックは、ユーザーがログインしている場合は機能しますが、ユーザーがFacebookポップアップを介してログインする必要がある場合は失敗します。

4

1 に答える 1

1

残念ながら、それは私にはうまくいきません。私は非常に愚かであるか、Facebook API にバグがある可能性があります。

いいえ。問題はあなたのアプローチにあります。コンセプト。

FB.logoutはアクティブなアクセス トークンでのみ機能します (そうしないと、ネット上でアクセスしたサイトが Facebook からログアウトする可能性があり、非常に煩わしいからです)。

ただし、ユーザーはアプリに接続しないため、アクセス トークンはありません。

通常のログインを促す - 可能ですが、アプリが一部の情報にアクセスする必要があると表示されます。

これがアクセス トークンを取得する唯一の方法であり、FB.logout を使用できる唯一の方法です。

(また、ユーザーが Facebook にログインした後、アプリへの接続を拒否した場合も、アクセス トークンがないため、その場合もログアウトできません。)

于 2012-12-05T16:12:55.717 に答える