さまざまなWebサイトに同じFacebookアプリケーションを使用する方法
-
24-10-2019 - |
質問
私はPHPで小さなCMSを開発しており、社会的統合を行っています。
コンテンツは、ニュース、イベントなどを公開するのにふさわしい1人の管理者によって変更されます...
この機能を追加すると、管理者がFacebookウォールに既に投稿されているものを公開しているときに追加します。私はFacebookのPHPSDKにあまり精通していません、そして私はそれについて少し混乱しています。
(例として)10種類のサイトがCMSを使用している場合、10種類のFacebookアプリケーションを作成する必要がありますか? (10のWebサイトがすべて異なるドメインとサーバーにあると仮定しましょう)
2番目、ユーザーをFacebookでログに記録する必要がないように、PHPだけで認証する方法はありますか(直接ユーザー名とパスワードを直接送信するなど)?
ありがとう
解決
読んでください http://developers.facebook.com/docs/.
それは本当に簡単で率直で、よく説明されています。
あなたの質問は非常に曖昧で広範であるため、ここではうまく答えられません。
特定の実装の問題が発生した場合、これは適切な場所です。
しかし、少なくともあなたの質問の一部に答えるために:
Facebookアプリケーションを操作する際の最も強力なツールは、グラフAPIです。
その原則は非常に単純です。ユーザーまたはアプリケーションに代わって、あらゆるアクションを実行できます。ユーザーと適切な権限を識別するトークンを最初に生成する必要があります。これらのトークンは「永続的」にすることができるので、背景タスクを実行できます。通常、彼らは非常に短い時間しかアクティブであるため、ユーザーと対話しながらアクションを実行できます。トークンを生成するプロセスには、ユーザーが求めている特権を確認する必要があるようにするためにユーザーが含まれます。
何かを自動的に公開するWebサイトの場合、プライバシー設定でアプリを削除する限り、アクティブな永久トークンを1回生成するでしょう。
基本的に、YuoはあらゆるWebサイトであらゆるアプリケーションを使用できます。制限はありません。ただし、トークンを生成するには2つの方法があります。 1つは追加のリクエストに関係し、1つはクライアント側に行われます。これは、アプリ設定で指定された1つのドメインOYUにバインドされています。
補遺:
@artoale
あなたは、すべてのアプリを正確に1つのドメインに蜂の巣することについて正しいです。ただし、有効なトークンを取得したら、グラフAPI内でどこまたは誰を使用しているのかは関係ありません。
私にこれを少し追放させてください:
あなたがリクエストをしているので、それは意味がありません。 「リクエストがどこから来ているのか」などのものはありません。もちろん、「参照」ヘッダー情報がありますが、自由に指定することができ、このコンテキストでは使用されません。
アプリの設定に入力するドメインは、Facebookがユーザーをリダイレクトする場合にのみ制限されます。
なぜ?
これにより、一部の悪人が任意のドメインにWebサイトをセットアップできず、ユーザーがアプリを承認し、アプリケーションでアクセストークンを取得できます。
したがって、この設定により、ユーザーとアクセストークンが別の悪いサイトではなく、サイトにリダイレクトされることが保証されます。
しかし、代替手段があります。デスクトップアプリケーションにコントロールフローを使用すると、ユーザーがリダイレクトされた直後にアクセストークンが表示されません。アクセストークンを獲得できる一時的なセッショントークンが得られます。この交換は、REST APIでサーバー側に行われ、アプリケーションの秘密が必要です。したがって、この時点で、トークンを手に入れるのはあなたであることが保証されています。
この方法は、任意のドメインで、またはドメインなしのデスクトップアプリケーションの場合に実行できます。
これは、Faceboo Docsからの引用です。
セッションを変換するには、投稿リクエストを送信します https://graph.facebook.com/oauth/exchange_sessions変換したいセッションのコンマ区切りリストを使用してください。
curl client_id = your_app_id -f client_secret = your_app_secret -f sessions = 2.dbavcpzl6yc_xgei0ip9ga__。3600.1271649600-12345,2.abdc... https://graph.facebook.com/oauth/exchange_sessionsリクエストからの応答は、与えられたセッションと同じ順序でOAuthアクセストークンのJSON配列です。
{"Access_token": "..."、 "expires":1271649600、}、...
ただし、この方法はもう少し複雑であるため、この方法は必要ありません。ユースケースについては、承認の中心的なポイントを使用することをお勧めします。
そのため、1つのドメインをリダイレクトURLとして指定します。このドメインは、Webサイト間で共有されています。そこで、完全に有効なアクセストークンを取得し、ユーザーを特定のプロジェクトWebサイトにシームレスにリダイレクトし、アクセストークンを渡すことができます。
これにより、おそらくより将来の証明である従来の簡単な認証フローを使用できます。
事実は残っています。アクセストークンが生成されると、任意のドメインから任意のアクションを実行できますが、リクエストが発生する「ドメイン」が文字通り「ドメイン」ではないため、違いはありません(上記参照)。
それとは別に、コメントボックスやボタンのように、いくつかの素敵なJavaScript機能を機能させる必要がある場合は、セットアップする必要があります グラフタグを開きます 正しく。
いくつかの実装の問題がある場合、または「ドメインエラー」と言ったように、それらをより明確に説明してください。作成した手順と、可能であればエラーメッセージを含めてください。
他のヒント
あなたはあなたの質問をより小さな理解可能なユニットに分割したいかもしれません。あなたが運転しているものを理解するのは非常に困難です。
あなたの問題についての私の理解は最小限に抑えられますが、ここに行きます...
1_いいえあなたは10種類のFacebookアプリケーションを作成しません。単一のFacebookアプリケーションを作成し、サービスエントリポイントにします。すべてのCMSサイトがこの1つのサイトに相談してFacebookと対話できるように。 (レストサービスレイヤー)。
2_ Facebook APIは、ユーザー名とパスワード認証をサポートしていません。 OAUTH2.0のみをサポートしています。 OAuthは些細なことではありませんが、そのためにライブラリを提供しているため、認証の実装はかなり些細なことです。