如何在不同网站上使用相同的Facebook应用程序
-
24-10-2019 - |
题
我正在开发PHP中的小型CMS,我们正在进行社会融合。
内容由单个管理员更改,他作为发布新闻,事件等的权利...
当管理员发布已发布在Facebook墙上的内容时,我会添加此功能。我对Facebook PHP SDK并不熟悉,对此我有些困惑。
如果(成为示例)10个不同的网站正在使用我的CMS,我是否必须创建10个不同的Facebook应用程序? (假设这10个网站都在不同的域和服务器中)
第二,是否有一种方法可以使用PHP进行身份验证(类似于直接发送用户名和密码),以便无需在Facebook上登录用户?
谢谢
解决方案
请阅读 http://developers.facebook.com/docs/.
它非常简单,直截了当,得到了很好的解释。
您的问题是如此模糊和广泛,以至于这里无法得到很好的回答。
如果您遇到任何特定的实施问题,这是正确的位置。
但是,要回答至少您问题的一部分:
使用Facebook应用程序时,最强大的工具是Graph API。
它的原理非常简单。您可以代表任何用户或应用程序执行任何操作。您必须首先生成一个令牌,以标识用户和适当的权限。这些令牌可以“永久”,因此您可以执行背景任务。通常,它们仅在很短的时间内就活跃,因此您可以在与用户互动时执行操作。生成代币的过程涉及用户,因此他/她必须确认您要的特权。
对于自动发布内容的网站,只要您在隐私设置中删除该应用程序,您可能会产生一个永久的令牌。
基本上,您可以在任何网站上使用任何应用程序。没有限制。但是,有两种产生令牌的方法。一个涉及附加请求,并且完成了客户端,该请求与您的应用程序设置指定的一个域OYU绑定。
附录:
@Artoale
您对每个应用程序的Assighend都对一个域进行了正确的选择。但是,一旦获得有效的令牌,在图API中使用它的位置或使用谁就无关紧要。
让我有点兴趣:
这是没有道理的,因为您要执行请求。没有“请求来自哪里”之类的东西。当然,有“推荐人”标题信息,但是可以自由指定,并且在任何情况下均不使用。
您在应用程序设置中输入的域仅限制了Facebook将用户重定向到的位置。
为什么?
这样可以确保某些坏人无法在任何域上设置网站,并让用户授权应用程序并使用您的应用程序获得访问令牌。
因此,此设置可确保用户和访问令牌将其重定向回到您的网站,而不是另一个不好的站点。
但是有另一种选择。如果您将控制流程用于桌面应用程序,则在用户重定向后,您将无法立即获得访问令牌。您将获得一个临时会议,您可以脱颖而出,以获取访问令牌。此交换是在REST API上完成的服务器端,需要您的应用程序秘密。因此,在这一点上,可以确保您获得令牌。
该方法可以在任何域上都可以在任何域上进行,也可以在没有域上进行桌面应用程序。
这是faceboo文档的报价:
要转换会议,请将邮政请求发送到 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,},...
但是,您不需要此方法,因为它更复杂。对于您的用例,我建议使用中心授权点。
因此,您将一个域指定为重定向URL。该域比您的网站之间共享。在这里,您可以获取完全有效的访问令牌,并无缝将用户无缝地重定向到您的特定项目网站,并传递访问令牌。
这样,您可以使用传统的简单身份验证流,这可能也是将来更具证据的证据。
事实仍然是。生成访问令牌后,您可以从任何域中执行任何操作,因此没有区别,因为从字面上看请求的位置没有“域”(请参见上文)。
除此之外,如果您想要一些不错的JavaScript功能工作 - 例如评论框或喜欢按钮,则需要设置 打开的图形标签 正确。
如果您有一些实现问题或正如您所说的“域错误”,请更清楚地描述它们,包括您所做的步骤,并在可能的情况下输入错误消息。
其他提示
您可能希望将问题分解为较小的可理解单元。很难理解您的驾驶。
我对您的问题的理解可能很小,但是这里...
1_不,您不会创建10个不同的Facebook应用程序。创建一个Facebook应用程序,并使其成为服务入口点。因此,您所有的CMS网站都可以与这个网站对话与Facebook互动。 (休息服务层)。
2_ Facebook API不支持用户名和密码身份验证。他们只支持oauth2.0。尽管Oauth并不小,但是由于它们为此提供了库,因此实施身份验证非常微不足道。