我在使 Open Graph 实现正常工作时遇到了一些问题。
据我所知,我有正确的元标记。当我将 URL 粘贴到 Open Graph Debugger 中时,它会返回定义的正确信息(标题、描述、图像等),并且没有错误。
我有 3.1.1 版的 Facebook PHP SDK。
我为我的开发应用程序启用了 Open Graph,并且定义了一个操作 ( read
) 和一个对象 ( article
)。
有问题的实现是一个网站,而不是一个 facebook 应用程序。在 facebook 上,应用程序的“类别”是“其他”。我在另一个线程中遵循了一些建议,并将其更改为“游戏”,但不起作用,所以我将其更改回来。
我使用 facebook 验证我的网络应用程序用户并收到一个代码,然后我用它换取一个access_token
非常标准的代码。我要求以下权限:
publish_stream
publish_actions
offline_access
但是,当我尝试调用发布操作时,我收到 OAuthException,并且没有真正的调试方法。
一些怪事:
- 图 API 似乎不喜欢文档中指定的 URL 格式:
me/[app_namespace]:[action_type]
. 在我的情况下,这将是me/' . FB_APP_NAMESPACE . ':read
FB_APP_NAMESPACE 之前定义为 facebook 应用程序设置中定义的命名空间。API 和 Graph API Explorer 都会抛出一个错误,指出它不理解给定的操作。它似乎试图将命名空间读取为操作。 og:type
如果我从 url 中删除命名空间,它会报告传入的操作与 url 中定义的不匹配,因为og:type
url 中包含我删除的相同命名空间。- 如果我从元标记中删除该命名空间,然后再试一次,我会得到一个无法调试的通用 OAuthException。
- 当我查看我的 facebook 应用程序中提供的代码示例时,该操作似乎
news.reads
不仅仅是read
. - 如果我使用该操作,图形 API 会返回一个错误,指出我的 ID 未经授权无法使用打开的图形,因为它不是我的应用程序的管理员、开发人员或测试人员。不幸的是,我是应用程序的创建者,这意味着要么图形 API 在撒谎,要么我在对自己撒谎!
我认为解决方案很简单——也许我忘记了什么,或者选择了某个类别不正确。无论哪种方式,至少可以说,这有点令人沮丧!