0

ユーザーが記事を読んだときに投稿が行われる記事リーダーを作成しようとしています。

私たちが直面している問題は、記事を読んでいるユーザーがFBにログインしていることを確認する必要があるため、記事のURLが公開されていないことです。

たとえば、ArticleURLはSERVER_NAME/ article / view/ARTICLE_SLUGのようなものです。

新しいユーザーがこのオブジェクトの投稿をクリックしようとすると、許可ページに移動し、許可すると記事が表示されます。ただし、このページはFacebookによってスクレイピングされていないため、投稿されません。

SERVER_NAME / article / ARTICLE_SLUGのようなログインに依存しないURLを作成しようとしましたが、og:urlでSERVER_NAME / article / view / ARTICLE_SLUGに設定し、投稿が発生するとSERVER_NAME / article / view/ARTICLE_SLUGがURLとして表示されると考えています。しかし、それは起こりません。

誰かがこれを行うための最良の方法を提案できますか?

4

2 に答える 2

1

Facebookがページをスクレイピングするとき、彼らは非常に具体的なユーザー エージェント文字列を使用します。

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

これについては、「Facebook が私のページをスクレイピングするのはいつですか?」の下の「いいね」ボタンのドキュメントで読むことができます。セクション。

リクエストを受け取ったら、リクエスト内のユーザー エージェント文字列を確認し、それが facebookスクレーパーと一致した場合は、リクエストを許可し、meta タグと og タグだけの単純な html を返します。facebook も結果をキャッシュするため、次のように 1 日に複数回発生することはありません。

Facebook は 24 時間ごとにページをスクレイピングして、プロパティが最新であることを確認します。Open Graph ページの管理者が Like ボタンをクリックしたとき、および URL が Facebook URL Linter に入力されたときにも、ページがスクレイピングされます。Facebook は、URL のキャッシュ ヘッダーを観察します。「Expires」と「Cache-Control」を優先順に調べます。ただし、より長い時間を指定しても、Facebook は 24 時間ごとにページをスクレイピングします。

于 2012-05-03T09:39:57.383 に答える
0

ログインしているユーザーが SERVER/article/view/SLUG (ビュー URL ) で記事を表示できるとします。あなたのホームページは、SERVER/article/SLUG にある記事の要約ビュー (要約 URL ) にリンクしており、ログインするためのボタンが表示 URL に移動します。

アプリはビュー URL で読み取りアクションを発行しますが、これは Facebook リンターによってスクレイプできません。この場合、新しいトラフィックが概要 URL に送られ、ユーザーがすでにログインしている場合は表示 URL にリダイレクトされるように、アプリを設計する必要があります。概要 URL はその記事オブジェクトの正規 URL になり、公開されるため、この URL に対するアクションを公開する必要があります。

これを行うには、メタタグ<og:url content="SERVER/article/SLUG" />をビュー URL と概要 URL メタデータの両方に追加します。

于 2012-05-03T10:01:29.253 に答える