2

FB Javascript SDK を使用して Facebook ログインを試みました。

ログイン後、Opera ブラウザでのみログイン ウィンドウが閉じません。この問題を解決するにはどうすればよいですか?

次のソース コードを試してみました: (この Web サイトのオンライン - LINK )

<html>
  <head></head>
  <body>
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {

        FB.init({
          appId: '101103500012652', // App ID
          channelUrl: '//www.milujse.cz/app/channel.html', // Channel File
          status: true,
          cookie: true,
          xfbml: true
        });

        FB.Event.subscribe('auth.authResponseChange', function(response) {

          if (response.status === 'connected') {
            testAPI();
          } else if (response.status === 'not_authorized') {

          } else {

          }
        });
      };

      (function(d) {
        var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
        if (d.getElementById(id)) {
          return;
        }
        js = d.createElement('script');
        js.id = id;
        js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        ref.parentNode.insertBefore(js, ref);
      }(document));

      function testAPI() {
        FB.api('/me', function(response) {
          alert('Good to see you, ' + response.name + '.');
        });
      }

      function loginFB()
      {
        FB.login(function(response) {
          if (response.authResponse) {
            testAPI();
          } else {
          }
        });
      }

      function logoutFB()
      {
        FB.logout(function(response) {
        });
      }
    </script>

    <input type="button" value="Login" onclick="loginFB();
        return false;" />
    <input type="button" value="Logout" onclick="logoutFB();
        return false;" />
  </body>
</html>
4

3 に答える 3

2

Opera にはバグがあり、Opera は状況によってはウィンドウで window.close() 関数をサポートしていないようです。

これは、javascript:window.close() および Operaで言及されているほか、https ://bugzilla.mozilla.org/show_bug.cgi?id=190515でバグとしてリストされています。

http://dev.vaadin.com/ticket/5687によると、window.closed() イベントは Opera でもバグがあるようです。

于 2013-05-17T02:44:48.290 に答える
2

ブラウザをチェックすることを検討しましたか。Opera が Facebook との接続に別の方法を使用している場合、つまり、oauth を使用すると、ポップアップを使用する代わりにページ全体を Facebook のログイン ページにリダイレクトできるので、できないという問題はありません。ポップアップを閉じます。ページ全体へのリンクは、「https://graph.facebook.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=http:YOUR_CALLBACK-URL&scope=WHAT_YOU_WANT」のようなものです

于 2013-05-17T19:54:03.870 に答える
1

たとえば、ブラウザを閉じるときにブラウザに依存しないログイン/ログアウトロジックをプログラミングすることは、結果として実装が困難です。

以下のコードを使用して確認し、ブレークポイントを setUser(null) に設定します

パッケージcom.example.vaadintests;

com.vaadin.Application をインポートします。com.vaadin.ui.Window をインポートします。com.vaadin.ui.Window.CloseEvent をインポートします。com.vaadin.ui.Window.CloseListener をインポートします。

public class VaadintestsApplication extends Application 
{
    @Override
    public void init() 
    {
        final Window rootWindow = new Window();
        setMainWindow(rootWindow);

        rootWindow.addListener(new CloseListener()
        {
            @Override
            public void windowClose(CloseEvent e)
            {
                setUser(null);
            }
        });

    }
}
于 2013-05-18T06:40:21.950 に答える