2011-03-14 56 views
2

我正在PHP中开发一个小型CMS,我们正在进行社交集成。如何为不同的网站使用相同的Facebook应用程序

的内容是由一个管理员谁出任右用于发布新闻,事件等等......

我倒是添加此功能,当管理员发布的东西,它已经在Facebook上发布墙上改变。我对facebook php SDK不是很熟悉,我对此有点困惑。

如果(让一个例子)10个不同的网站都在使用我的CMS,我必须创建10个不同的Facebook应用程序? (让我们假设这10个网站都在不同的域和服务器)

2,有没有一种方法用PHP进行身份验证(如直接发送用户名&密码),以便用户不需要登录Facebook ?

谢谢

回答

1

http://developers.facebook.com/docs/阅读起来。

它真的很简单直接,很好地解释。

你的问题是如此模糊和广泛的,它不能很好地在这里得到解答。

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

但是回答你的问题的ATLEAST部分:

当Facebook应用程序的工作是图形API的最有力的工具。

其原理很简单。您可以代表任何用户或应用程序进行任何操作。您必须首先生成标识用户和适当权限的标记。这些令牌可以设置为“永久”,因此您可以执行后台任务。通常他们只在很短的时间内活跃,因此您可以在与用户交互时执行操作。生成令牌的过程涉及用户,以便他/她必须确认您要求的权限。

如果网站发布自动东西你可能会产生永久的标记一个时间是活动的,只要你移除该应用在您的隐私设置。

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

附录:

@ArtoAle

你说得对每一个应用程序beeing assighend正好一个域。然而,一旦你获得了一个有效的标记,它就不会影响你在图表api中使用它的位置或用户。

让我这个expalin一点点:

它根本没有任何意义,因为它是你做的请求。没有“请求来自何处”之类的东西。当然还有“引用者”标题信息,但它可以自由指定,并且不用于任何情况。

您在应用设置中输入的域名仅限制Facebook将用户重定向到的位置。

为什么?

这可以确保一些坏人无法在任何域上建立网站,并让用户授权应用程序并获得您的应用程序的访问令牌。

所以这个设置可以确保用户和访问令牌被重定向回你的站点而不是另一个不好的站点。

但有一个选择。如果您使用桌面应用程序的控制流,则在用户重新导回之后您不会获得访问令牌。你会得到一个临时的SESSION-TOKEN,你可以通过EXCCHANGE获得一个访问令牌。这个交换是通过REST api完成服务器端的,并且需要你的应用程序保密。所以在这一点上,确保你得到了令牌。

此方法可以在任何域上完成,或者在没有域的桌面应用程序的情况下完成。

这是从faceboo文档报价:

要转换的会话,发送POST 请求 https://graph.facebook.com/oauth/exchange_sessions 用逗号分隔的 会话列表要转换:

卷曲的client_id = YOUR_APP_ID \ -F client_secret = your_app_secret \ -F会话= 2.DbavCpzL6Yc_XGEI0Ip9GA __。3600.1271649600-12345,2.aBdC ... \ https://graph.facebook.com/oauth/exchange_sessions 从该请求的响应是 顺序相同的给定会话OAuth访问令牌的 JSON数组:

[{ “的access_token”: “...”, “过期”:1271649600, },...]

但是,您不需要这种方法,因为它更复杂一点。为了您的使用情况,我建议使用授权的中心点。

因此,您将指定您的ONE域名为重定向网址。此网域不是在您的网站之间共享。您可以获得完全有效的访问令牌,并将用户无缝重定向到您的特定项目网站并传递访问令牌。

这样,您就可以使用传统的简单的认证流程这大概也是更长远的保障。

的事实依然存在。一旦访问令牌生成后,您可以从任何域执行任何操作,但没有区别,因为它实际上不是来自请求的“域”(参见上文)。

除此之外,如果你想要一些很好的JavaScript功能工作 - 如评论框或类似按钮,你需要正确设置open graph tags

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

+0

好的。我应该在我的答案中提到图api。我默认了它的含义。我的错。 – 2011-03-14 20:26:26

+0

“基本上yuo可以与任何网站上的任何应用程序一起工作”。纠正我,如果我错了,我可以在任何网站上使用相同的fb应用程序,只要我有一个有效的身份验证令牌? – ArtoAle 2011-03-14 20:30:44

+0

@ArtOle这是正确的。只有JavaScript认证流程绑定到域。但是您可以选择使用桌面身份验证流程,但它也可以通过Web访问,但涉及附加的服务器端请求。如果您添加OG – 2011-03-14 21:27:32

3

你可能想把你的问题分解成更小的可理解的单位。很难理解你在驾驶什么。

我你的问题的理解可能是最小的,但在这里不用...

1_不,你不创建10个不同的Facebook应用程序。创建一个单一的Facebook应用程序,并使其成为服务入口点。这样你所有的CMS站点都可以与这个站点交谈来与Facebook进行交互。 (REST服务层)。

2_ Facebook api不支持用户名和密码认证。他们只支持oauth2.0。尽管Oauth不是微不足道的,但是因为他们提供了这个库,所以实现身份验证非常简单。

+0

是啊,这是definetly凌乱,SRY了点。其实我真的不得不花费更多时间阅读fb API文档=) – ArtoAle 2011-03-14 20:31:33

相关问题