Chromeウェブストア経由でページをインストールすると、Facebookのログインが「XDプロキシ」でハングする

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

質問

次のWebアプリケーションを作成しました:

http://www.web-allbum.com/

Chromeウェブストアにも追加しました:

https://chrome.google.com/webstore/detail/idalgghcnjhmnbgbeebpdolhgdpbcplf

問題は、Chromeウェブストアにアクセスしてこのアプリをインストールすると、Facebookのログインウィンドウが「XDプロキシ」ウィンドウでハングすることです。接続自体は機能しますが、この空白のウィンドウはユーザーを混乱させる可能性があります。

調査を行いましたが、これはChromeの問題のようです。 https://code.google.com/p/chromium/ issues / detail?id= 59285#c26

Chromeからアプリをアンインストールすると、問題は解決します。

この問題の回避策はありますか?

同様のスタックオーバーフローの質問:

  • ChromeでのFacebook接続ログインウィンドウのロック
  • FB.loginダイアログがGoogleChromeで閉じない
  • facebook connect blank pop up on chrome
  • https://stackoverflow.com / questions / 4423718 / blank-page-with-fb-connect-js-sdk-on-after-permission-request

    これは、役立つ場合に備えて、私のFacebook接続です: ジェネラコディセタグプレ

    ソリューション

    reekogiの返信のおかげで、この問題を回避することができました。完全な実装は次のとおりです。

    XDプロキシの問題を回避するには、FB.loginを使用せずにFacebookに接続する必要があります。これは、ユーザーを手動でFacebookページにリダイレクトすることで実現できます。

    コードにこのログイン機能がありました: ジェネラコディセタグプレ

    このコードに置き換えたもの: ジェネラコディセタグプレ

    新しいコードは、Facebookに接続し、「next」パラメーターで指定されたURLに戻るポップアップを開きます。このコールバックURLにいくつかのパラメーターを追加して、JavaScriptコードがそれをチェックしてポップアップを閉じることができるようにしました。

    このコードは、FacebookがコールバックURLにリダイレクトするときに実行されます: ジェネラコディセタグプレ

    URL_PARAMSは、すべてのurlパラメータを含む単なるヘルパーオブジェクトです。

    これはChromeの問題だと思いますが、この回避策が機能して問題が解決したため、この質問を解決済みとしてマークしています。

役に立ちましたか?

解決

javascriptリダイレクトを呼び出して権限を取得してから、 http://www.webにリダイレクトしてください。-allbum.com/connected uri?

この方法については、ここで詳しく説明しました-> ファンページの権限

編集:

前に示した方法は、OAuth2.0が要件に含まれると非推奨になります。

これがOAauth2.0に適合したコードです(response.sessionresponse.authResponseに置き換えられています) ジェネラコディセタグプレ

試してテストしたところ、Chromeで問題なく動作しました。

他のヒント

Facebookの公式JavaScriptSDKを使い続けることを好むため、Cesarが提案したソリューションは試しませんでした。

それでも、いくつかの所見を追加したいと思います:

  • 実際、ブロックの問題はChromeウェブストアからインストールした後にChromeでのみ発生しました。Webアプリをアンインストールすると、問題が解決します。(oauth 2.0を使用せずに、従来の認証方法でテスト済み)。XDプロキシポップアップを手動で閉じた後、アプリケーションは正常に機能していました。

  • 非同期FB.init()に切り替えて、oauth 2.0オプションを有効にした後、アプリケーションはログイン時に有効なFacebook接続ステータスを取得しませんでした({authResponse: null, status: "unknown"}) ...繰り返しますが、Chromeウェブストアからアンインストールすると機能します...({authResponse: Object, status: "connected"})

  • これらのいずれの場合でも、Safariで問題は発生しません。

IE8の場合-これは、フラッシュのバージョンが原因である可能性があります。私はすべてを試しましたが、フラッシュを無効にするまで何も機能しませんでした。このブログの詳細:http://hustoknow.blogspot.com/2011/06/how-facebooks-xdproxyphp-seemed-to-have.html#comment-form

Chromeで新しいブラウザタブを開き、Facebookの「アプリ」がインストールされているかどうかを確認します。その場合は、右下隅にドラッグしてアンインストールします。アンインストールすると、XDプロキシが機能します。

参照: facebook connect blank pop up on chrome

すべてのブラウザで同じ問題が発生していました。ユーザーが「ログイン」ボタンをクリックすると、ポップアップが開いてハングしました。また、ユーザーがブラウザプロセスを強制終了しない限り、CPUに高い負荷がかかります。ただし、ユーザーが「許可」ボタンを表示してクリックした場合は、「xdプロキシ」の空白のウィンドウが表示され、何も起こりませんでした。それが問題でした。

長い調査の結果、setInterval / clearInterval / setTimeout / clearTimeoutメソッドをプロキシする新しいJSコードがこの問題の原因であることに気付きました。コードは次のとおりです。 ジェネラコディセタグプレ

これらの行を削除すると、問題が解決しました。たぶんそれは誰が同じことを経験するのに役立つでしょう。

これはChromeで修正されたようです。Mac Chrome 15.0.874.106 では発生しなくなりました

別の回避策は、FB.init()を呼び出した後にこのコードを使用することです: ジェネラコディセタグプレ

ポップアップウィンドウは開いたまま空白のままですが、Chromeウェブストアアプリで、このコードを使用すると認証が行われることがわかりました。

このバグは、Facebook開発者にも次の場所で報告されています: http://developers.facebook.com/bugs/278247488872084

IE9でも同じ問題が発生しており、Flash Player 10へのアップグレードが原因のようです。提案された回答はすでに機能せず、<を見つけてから修正を試みることへの希望を失いました。a href="http://bugs.developers.facebook.net/show_bug.cgi?id=12112" rel="nofollow noreferrer"> Facebookでバグを開いてください。しかし、ヘンソンは回答を投稿しました私のためにそれを修正した同様の質問について。サイトマスターのJavaScriptで、行を削除しました ジェネラコディセタグプレ

そして今では動作します。(注:IE8の問題で、これらの行が返品を克服することを目的としていたかどうかは確認していません。)

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