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

时间:2011-03-14 20:14:05

标签: facebook facebook-graph-api facebook-php-sdk

我正在用PHP开发一个小型CMS,我们正在进行社交集成。

内容由一位管理员更改,该管理员有权发布新闻,事件等...

当管理员发布已在Facebook墙上发布的内容时,我会添加此功能。我对facebook php SDK不太熟悉,对此我有点困惑。

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

第二,有没有办法用PHP进行身份验证(比如直接发送用户名和密码),这样用户就不需要登录Facebook了?

感谢

2 个答案:

答案 0 :(得分:3)

您可能希望将问题分解为较小的可理解单位。很难理解你在驾驶什么。

我对你的问题的理解可能很少,但是这里......

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

2_ Facebook api不支持用户名和密码验证。他们只支持oauth2.0。尽管Oauth不是一件容易的事,但由于他们为此提供了库,因此实现身份验证非常简单。

答案 1 :(得分:1)

请阅读http://developers.facebook.com/docs/

它非常容易和直接,并且很好地解释了。

你的问题是如此模糊和广泛,以至于无法在这里得到很好的回答。

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

但至少要回答你问题的一部分:

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

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

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

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

附录:

@ArtoAle

对于每个应用程序而言,您对于一个域名是正确的。但是一旦你获得了一个有效的令牌,那么在图api中你从哪里或者谁使用它并不重要。

让我稍微了解一下:

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

您在应用设置中输入的域只会限制facebook重定向用户的位置。

为什么?

这可以确保某些坏人无法在任何域上设置网站,并让用户授权应用并使用您的应用获取访问令牌。

因此,此设置可确保将用户和访问令牌重定向回您的网站,而不是重定向到其他不良网站。

但还有另一种选择。如果您使用桌面应用程序的控制流,则在用户重定向后,您不会立即获得访问令牌。你得到一个临时的SESSION-TOKEN,你可以EXCCHANGE获取访问令牌。这个交换是通过REST API在服务器端完成的,需要你的应用程序保密。所以在这一点上确保获得令牌的是你。

此方法可以在任何域上完成,也可以在任何域上的桌面应用程序中完成。

这是来自faceboo docs的引用:

  

要转换会话,请发送POST   请求   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   请求的响应是   USON访问令牌的JSON数组   与给出的会话顺序相同:

     

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

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

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

通过这种方式,您可以使用传统的简单身份验证流程,这可能也是未来的证明。

事实依旧。一旦生成了访问令牌,您就可以从任何域执行任何操作,没有区别,因为实际上没有请求来自的“域”(见上文)。

除此之外,如果你想要一些不错的javascript功能 - 比如评论框或类似按钮,你需要正确设置open graph tags

如果您遇到某些实施问题或者您说“域名错误”,请更清楚地描述它们,包括您所做的步骤以及可能的错误消息。