Facebook php sdk v.3.2.3 - 事件创建突然停止工作

Posted

技术标签:

【中文标题】Facebook php sdk v.3.2.3 - 事件创建突然停止工作【英文标题】:Facebook php sdk v.3.2.3 - event create suddenly stopped working 【发布时间】:2014-06-20 09:49:36 【问题描述】:

一个多月前,我为网站创建了 FB 应用程序,它能够创建用户事件。它使用 FB php SDK v.3.2.3 和 Graph API 1.0 版:

$facebook = new Facebook(array('appId' => MYAPPID, 'secret' => MYAPPSECRET));
$facebook->api('/me/events', 'POST', array('name' => 'Your meeting', 'start_time' => '2014-06-20', 'location' => 'Cool place', 'privacy_type' => 'SECRET'));

大约几天前它突然停止工作 - 现在 facebook 返回 OAuthException:“发生未知错误。”。我使用有效的令牌(已选中)。

我查看了 FB Devs 博客,但没有任何相关信息(通常情况下,很遗憾)。有什么线索吗?

【问题讨论】:

您的访问令牌有效吗? @Maerlyn :是的,我的访问令牌是有效的。 【参考方案1】:

Facebook 有 disabled the ability 通过 API 为用户创建事件。文档说:

您无法通过 Graph API 创建事件。

但是,如果您使用的是1.0 of the Graph API,则仍然只允许在有限的时间内发布。但create_event 权限已被删除。

【讨论】:

是的,我使用的是 Graph API 1.0 版。我知道 v.2.0 中的这个限制。问题是即使在 v.1.0 中它也无法正常工作,只是抛出一般异常。 可能是 Facebook(无论是有意还是无意)也从 v1.0 中删除了该功能。 这应该是选择的答案。【参考方案2】:

我也遇到了一个错误,这是由于 'privacy_type' => 'SECRET' 和时间格式...看起来发送 privacy_type => SECRET 会引发 OAuth 错误,但实际上仍会创建一个事件具有正确的权限。此外,您的日期需要采用 ISO-8601 时间格式。

https://developers.facebook.com/blog/post/2012/08/01/platform-migration--events-timezone-support/

privacy_type => SECRET 将返回错误的原因是您的应用有权代表用户创建事件,但是一旦创建并设置为私有,应用就没有必要的权限VIEW 事件,因此无法将事件 ID 作为响应返回。

我会尝试检查我的时间格式,然后删除 privacy_type 看看会发生什么。

更新:如果您的应用也具有 user_events 权限,我还确定您可以将 privacy_type 设置为 SECRET。仅供参考。

【讨论】:

感谢您的彻底检查,但不幸的是,更改日期格式并不能解决问题。我还检查了其他 privacy_type 值,但也没有运气。 ...但是:感谢您的建议,我开始更多地使用 privacy_type 字段并找到了解决方案 - 我将在一分钟内发布。 @cromdev 对于事件,'privacy' 不是一个有效参数...我几乎可以保证它不会将您的隐私设置为您喜欢的设置...如果您将 SECRET 传递给 '隐私”,您创建的活动可能仍然是公开的。 'privacy_type' 是正确的,但您的应用需要 create_events 和 user_events 权限才能在创建时不返回 oauth 错误。 太棒了!你是对的,它缺少“user_events”权限。【参考方案3】:

这看起来很荒谬,但正在改变

'privacy_type' => 'SECRET',

'privacy' => 'SECRET',

修复了问题。

我的猜测是,本月 FB 旧 API 发生了微小且未记录的更改。

非常感谢 @kevindeleon 指导我检查更多关于隐私设置的信息。

【讨论】:

正如我在其他评论中所说的那样,我只是在这里发布,以防您确实接受自己的答案对其他人是正确的......请确保检查“隐私”实际上是按照您的预期工作的它...对于事件,“隐私”不是有效参数(它只是被忽略)...我几乎可以保证它不会将您的隐私设置为您喜欢的设置...如果您将 SECRET 传递给“隐私”,您创建的事件可能仍然是公开的。 'privacy_type' 是正确的,但您的应用需要 create_events 和 user_events 权限才能在创建私有 (SECRET) 事件时不返回 oauth 错误。 正确,@kevindeleon 的回答获得了奖励 - 为他点赞!

以上是关于Facebook php sdk v.3.2.3 - 事件创建突然停止工作的主要内容,如果未能解决你的问题,请参考以下文章

facebook-php-sdk loginurl api 错误代码 100

未捕获的 OAuthException Facebook PHP SDK

Facebook 登录:如何将 JavaScript 与 PHP SDK 结合起来?

Facebook PHP SDK启动程序代码

Facebook php SDK getLogoutUrl() 问题

facebook 使用 PHP SDK 打开图计数共享