ASP.NET Facebook接続混乱:オブジェクトのプロパティ「オープン」[オブジェクトdomwindow]は関数ではありません

StackOverflow https://stackoverflow.com/questions/8803649

  •  26-10-2019
  •  | 
  •  

質問

Facebook Connect機能を取り組んでいるWebサイトに実装しようとしています。このサイトは、一部のコントロール用にすべての既存のページ(ログインページを含む)とAJAXコントロールツールキットをラップするマスターページであるASP.NETを使用します。 Facebookのドキュメントが指示するように、JavaScript SDK関数を使用しています。 Facebook APIを呼び出すコードは次のとおりです。

`<div id="fb-root">
</div>
<script type="text/javascript">
    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=APP_ID";
        fjs.parentNode.insertBefore(js, fjs);
    } (document, 'script', 'facebook-jssdk'));
</script>`

そして、匿名のJavaScript関数を使用して、ユーザーにFacebookログインのエントリポイントを提供するコードを次に示します。

<input type="button" 
    onclick=" 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 + '.');
                                   FB.logout(function(response) {
                                       console.log('Logged out.');
                                   });
                               });
                           } 
                           else {
                               console.log('User cancelled login or did not fully authorize.');
                        }
              }, {scope: 'email'});" value="Login Facebook" />

問題は、window.openは関数ではなく、オブジェクトのプロパティであり、Facebookログインダイアログのプロパティが表示されないという例外が得られることです(正確な例外メッセージはタイトルのようです)。このエラーがどこから来たのかわかりません。私はこの問題に一日を扱ってきましたが、今ではそれを解決することに必死になっています。問題の原因を見つける方法はありますか?助けてくれませんか?

前もって感謝します。

注:奇妙なことは、マスターページを使用せずに新しいページを作成し、すべてのFacebook呼び出しを新しいページに移行するときに機能するということです。

役に立ちましたか?

解決

質問を見てくれたすべての人に感謝します。幸いなことに、私は問題を解決するためにもう少し時間を節約することができ、このエラーが理由である場所を見つけました。別の開発者が変数を宣言したことがわかりました open = false; 「var」キーワードを使用せずに、含まれているJavaScriptファイルの1つでは。したがって、既存の「window.open」関数を覆し、適切に機能しないようにします。私がしなければならなかったのは、宣言を変更することでした var open = false;。どちらも、それが迅速に気づくのに十分な経験がありませんでした。また、JavaScriptは、開発者がそのような間違いを犯さないようにするために進んでいます。それで、私はこの混乱に導かれました:)

他のヒント

APPIDは、JS SDKロードコードでは指定されていません。隠されているため、交換する必要があることを見落とすのは簡単です。

js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=APP_ID";

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top