5

以下は、ログインイベントをdivにバインドします。クリックすると、期待どおりのjssdkログインポップアップが表示されます。ただし、クレデンシャルを使用してポップアップを送信すると、ポップアップが白くなり、閉じません。ページを更新するとログインしますが、期待どおりに自動更新されません。誰かアイデアがありますか?


編集:同じコード(diffアプリIDとドメインクレデンシャルを使用)は別のサーバーで機能します。これにより、私の問題は以下のコードとは無関係である可能性があると私は信じています。ログインポップアップのクローズ/更新に失敗する可能性のあるアプリまたはサーバーの構成はありますか?


<!DOCTYPE html>
<html class="no-js ie ie10plus" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object#">
        <script src="http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.0.6-development-only.js"></script>
    </head>
    <body>
        <div id="fb-root"></div>
        <div id="fbLogin">Test login link</div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> 
        <script>               
              var fbmm = {};

              window.fbAsyncInit = function() {
                FB.init({
                  appId      : '339910146083688', // App ID
                  cookie: true, 
                  xfbml: true,
                  status: true,
                  oauth: true
                });

                $(document).ready(function(){
                    $("#fbLogin").click(function(){
                        console.log('test');
                         FB.login(function(response) {
                           if (response.authResponse) {
                             console.log('Welcome!  Fetching your information.... ');
                             FB.api('/me', function(response) {
                               console.log('Good to see you, ' + response.name + '.');
                             });
                           } else {
                             console.log('User cancelled login or did not fully authorize.');
                           }
                         });
                    });
                });

              };

          (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));
        </script>
    </body>
</html>
4

5 に答える 5

5

80 または 443 以外のポートでテストする場合、既知の問題がいくつかあります。これらの (「通常の」) HTTP(S) ポートのいずれかにテスト マシンを設定してみて、問題が解決しないかどうかを確認してください。

于 2012-07-04T09:28:16.453 に答える
1

FB.login()変更してダイアログボックスを閉じるための同様の呼び出しがありました

onclick="loginviafb()";

onclick="loginviafb(); return false;"
于 2016-09-16T11:32:18.153 に答える
1

私の推測では、ドキュメント (Channel Url セクションの下) に記載されているように、チャネル URL を提供していないために問題が発生していると思われます。

チャネル ファイルは、特定のブラウザーでのクロス ドメイン通信に関するいくつかの問題に対処します。
...
channelUrl パラメータはオプションですが、推奨されます。

あなたの問題はチャンネルファイルが解決する3つの問題にリストされていませんが、私はあなたと同じ問題を一度経験し、チャンネルを追加することで解決しましたが、それは少し前のことなので100%同じではありません.
チャンネル ファイルの作成方法が説明されていますが、javascript を少しだけ変更する必要があります。

FB.init({
    appId: '339910146083688', // App ID
    cookie: true, 
    xfbml: true,
    status: true,
    oauth: true,
    channelUrl: YOUR_CHANNEL_URL
});
于 2012-07-04T19:30:48.353 に答える
0

代わりに、アプリ設定の認証ダイアログカスタマイズオプションを使用してアプリログインをカスタマイズしてみることができます。そこで、必要な権限を構成できます。ユーザーがアプリにログイン/承認されていない場合、Facebookは自動的にapp-authページにリダイレクトします。まず、アプリの設定>認証ダイアログから有効にする必要があります。下の画像のここをクリック注釈を参照してください。お役に立てれば。 ここに画像の説明を入力してください

于 2012-07-04T20:43:56.533 に答える