0

ユーザーの現在の Web ページをスクレイピングし、そこから取得したデータを保存するブックマークレットを開発しようとしています。私自身の Web サイトでは、ユーザーは Facebook API 経由でサインインします。

ブックマークレットを使用すると、Facebook ログイン モーダルを正常に表示できますが、サインインすると API が例外をスローします。

指定された URL はアプリケーションによって所有されていません。

私はこれに慣れていませんが、おそらくこれは、ブックマークレットにアクセスしている現在のページが自分のドメインと一致しないためでしょうか?

そのドメインでホストされている外部ファイルから JavaScript を実行していますが、それで十分ではないでしょうか?

または、これに対処するにはどうすればよいですか? 残念ながら、私は独自のアカウント管理機能を提供することができず、ユーザー管理を Facebook に依存しています。

説明や創造的なアイデアを歓迎します。

4

1 に答える 1

0

解決策は、現在のページの iframe 内、または新しいタブまたは新しいポップアップ ウィンドウ内の独自のドメインでログイン ステップをホストすることです。とにかく、それ以下のものはあまりにも安全ではありません.

可能な手順:

  1. ブックマークレットが実行され、データがスクレイピングされます。
  2. ブックマークレットは、src="http://yourdomain.com/bookmarklet-widget?data=...." で iframe を作成します。
  3. まだログインしていない場合は、ウィジェット コンテンツ ページで最初にログイン手順が必要です。

データが大きすぎて GET で送信できない場合は、POST を使用できます。手順は次のようになります

  1. ブックマークレットが実行され、データがスクレイピングされます。
  2. Bookmarklet は、「mywidgetframe」のような名前の空の iframe を作成します。
  3. ブックマークレットは、method=post target=mywidgetframe および action="http://yourdomain.com/bookmarklet-widget" でフォームを作成します
  4. ブックマークレットがフォームを送信します。
  5. まだログインしていない場合は、ウィジェット コンテンツ ページで最初にログイン手順が必要です。

iframe/window と現在の親ページの間の直接通信が必要な場合は、http://enable-cors.org/を確認してください。

于 2013-03-06T05:37:27.690 に答える