Chromeウェブストア経由でページをインストールすると、Facebookのログインが「XDプロキシ」でハングする
-
28-10-2019 - |
質問
次のWebアプリケーションを作成しました:
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.session
はresponse.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プロキシが機能します。
すべてのブラウザで同じ問題が発生していました。ユーザーが「ログイン」ボタンをクリックすると、ポップアップが開いてハングしました。また、ユーザーがブラウザプロセスを強制終了しない限り、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でバグを開いてください。しかし、
そして今では動作します。(注:IE8の問題で、これらの行が返品を克服することを目的としていたかどうかは確認していません。)