如何在不同的网站上使用相同的facebook应用程序

如何在不同的网站上使用相同的facebook应用程序,facebook,facebook-graph-api,facebook-php-sdk,Facebook,Facebook Graph Api,Facebook Php Sdk,我正在用PHP开发一个小型CMS,我们正在进行社会整合 内容由一名管理员更改,管理员有权发布新闻、事件等 我想添加这个功能,当管理员发布它已经发布在facebook墙上的东西时。我不太熟悉facebook php SDK,对此我有点困惑 如果(举个例子)有10个不同的网站在使用我的CMS,我需要创建10个不同的facebook应用程序吗?(假设这10个网站都位于不同的域和服务器中) 第二,是否有一种只使用PHP进行身份验证的方法(比如直接发送用户名和密码),这样用户就不需要登录facebook

我正在用PHP开发一个小型CMS,我们正在进行社会整合

内容由一名管理员更改,管理员有权发布新闻、事件等

我想添加这个功能,当管理员发布它已经发布在facebook墙上的东西时。我不太熟悉facebook php SDK,对此我有点困惑

如果(举个例子)有10个不同的网站在使用我的CMS,我需要创建10个不同的facebook应用程序吗?(假设这10个网站都位于不同的域和服务器中)

第二,是否有一种只使用PHP进行身份验证的方法(比如直接发送用户名和密码),这样用户就不需要登录facebook


谢谢

您可能希望将问题分解为更小的可理解单元。很难理解你的意图

我对你的问题的理解可能很小,但现在

1_uu不,您不会创建10个不同的facebook应用程序。创建一个facebook应用程序并将其作为服务入口点。这样你所有的cms网站都可以和这一个网站交流,与facebook互动。(一个REST服务层)

2_uuFacebookAPI不支持用户名和密码身份验证。它们只支持oauth2.0。虽然Oauth并不简单,但因为他们已经为此提供了库,所以实现身份验证非常简单。

请继续阅读

这真的很简单,直截了当,而且解释得很好

你的问题如此含糊和广泛,在这里无法很好地回答

如果您遇到任何具体的实现问题,这里就是正确的地方

但是,要回答您问题的至少一部分:

使用facebook应用程序时最强大的工具是Graph API

它的原理很简单。您可以代表任何用户或应用程序执行任何操作。您必须首先生成标识用户和适当权限的令牌。这些代币可以成为“永久性”的,这样您就可以执行后台任务。通常,它们只在很短的时间内处于活动状态,因此您可以在与用户交互时执行操作。生成令牌的过程涉及用户,因此他/她必须确认您请求的特权

对于自动发布内容的网站,只要在隐私设置中删除应用程序,您可能会一次性生成一个活动的永久令牌


基本上,yuo可以在任何网站上使用任何应用程序。没有限制。但是,有两种生成令牌的方法。一个涉及到一个附加请求,另一个是客户端完成的,客户端绑定到应用程序设置中指定的一个域oyu

增编:

@阿托尔

你是对的,每一个应用程序都指向一个域。然而,一旦您获得了一个有效的令牌,在graph api中从何处或由谁使用它就无关紧要了

让我解释一下:

这是没有意义的,因为这是你做的请求。没有“请求来自哪里”这样的事情。当然有“referer”头信息,但它可以自由指定,并且不在任何上下文中使用

您在应用程序设置中输入的域仅限制facebook将用户重定向到的位置

为什么?

这确保了某些坏人无法在任何域上建立网站,并允许用户授权应用程序并使用您的应用程序获取访问令牌

因此,此设置确保用户和访问令牌重定向回您的站点,而不是另一个坏站点

但还有一种选择。如果您对桌面应用程序使用控制流,则在用户被重定向回后,您不会立即获得访问令牌。您将获得一个临时会话令牌,可以将其更改为访问令牌。此交换是通过RESTAPI在服务器端完成的,需要您的应用程序机密。因此,在这一点上,可以确保是您获得令牌

这种方法可以在任何域上完成,或者在没有域的桌面应用程序上完成

这是faceboo文档中的引用:

要转换会话,请发送帖子 请求 使用逗号分隔的 要转换的会话:

curl client\u id=您的应用程序\u id\ -F client\u secret=你的应用程序\u secret\ -F sessions=2.DbavCpzL6Yc_XGEI0Ip9GA_uuuu0.3600.1271649600-12345,2.aBdC。。。 \ 请求的响应是 中OAuth访问令牌的JSON数组 与给定的会话顺序相同:

[{ “访问令牌”:“…”, “过期”:1271649600,},…]

但是,您不需要这种方法,因为它有点复杂。对于您的用例,我建议使用中心授权点

因此,您可以指定一个域作为重定向url。此域在您的网站之间共享。在那里,您可以获得完全有效的访问令牌,并无缝地将用户重定向回您的特定项目网站,并传递访问令牌

通过这种方式,您可以使用传统的easy身份验证流,它可能也更适合未来

事实依然如此。一旦生成了访问令牌,您就可以从任何域执行任何操作,这没有什么区别,因为请求从哪里来(见上文)实际上没有“域”

除此之外,如果你想让一些漂亮的javascript特性工作——比如评论框或者按钮,你需要正确设置


如果您有一些实现问题或如您所说的“域错误”,请更清楚地描述它们,包括您所执行的步骤,如果可能,还包括错误消息。

ok。我应该在回答中提到graph api。我认为它是含蓄地被理解的。我错了,“基本上是yuo-ca