我正在用PHP开发一个小型CMS,我们正在进行社交集成。
内容由一位管理员更改,该管理员有权发布新闻,事件等...
当管理员发布已在Facebook墙上发布的内容时,我会添加此功能。我对facebook php SDK不太熟悉,对此我有点困惑。
如果(举个例子)10个不同的网站正在使用我的CMS,我是否必须创建10个不同的Facebook应用程序? (我们假设10个网站都在不同的域和服务器中)
第二,有没有办法用PHP进行身份验证(比如直接发送用户名和密码),这样用户就不需要登录Facebook了?
感谢
答案 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。
如果您遇到某些实施问题或者您说“域名错误”,请更清楚地描述它们,包括您所做的步骤以及可能的错误消息。