最近,我听说使用Facebook Open Graph API,it is possible to post to a user's newsfeed if they have liked a page。
我一直在努力跟随这个例子,并且created a dummy page。
据我了解,有必要执行以下操作:
获取访问令牌(发布消息)
curl -F grant_type=client_credentials -F client_id=MY_APP_ID -F client_secret=MY_APP_SECRET -F redirect_uri=https://graph.facebook.com/oauth/access_token https://graph.facebook.com/oauth/access_token
发布到Feed
curl -F 'access_token=ACCESS_TOKEN_FROM_STEP_4' -F 'message=Hello Likers' -F 'id=http://dl.dropbox.com/u/3618086/test.html' https://graph.facebook.com/feed
此时此消息应发送给喜欢该页面的任何人。相反,我收到以下错误:
{
"error": {
"message": "(#100) http:\/\/dl.dropbox.com\/u\/3618086\/test.html does not resolve to a valid user ID",
"type": "OAuthException",
"code":100
}
}
在这一点上,我很困惑。我已经阅读了这些相关的问题:
并尝试了他们的建议,但没有成功。我错过了什么步骤?
我可以提供进一步的细节;我只是不想让问题太长。
答案 0 :(得分:4)
好吧,我弄明白了我的问题。为了别人的利益,我将下面的解决方案包括在内。
我上面列出的步骤确实是正确的,但有一些事情值得进一步解释,以避免陷入陷阱。
http://dropbox.com
dropbox.com
,这将允许Facebook使用*.dropbox.com
。我也可以专门做dl.dropbox.com
。创建虚拟页面非常重要。我发现我的大多数问题都是由于设置初始页面错误造成的。如果您创建一个虚拟页面,您可以尝试(或至少创建另一个虚拟页面),直到一切正常。
确保您的页面正确无误,尤其是打开的图形标记。 正确是什么样的?您可以check out my dummy page,但我已将<HEAD>
包括在内:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://ogp.me/ns#">
<head>
<title>Test</title>
<link href="http://dl.dropbox.com/u/3618086/test2.html" rel="canonical" />
<meta property="fb:app_id" content="YOUR_APP_ID">
<meta property="og:type" content="product">
<meta property="og:title" content="PAGE TITLE" />
<meta property="og:description" content="PAGE DESCRIPTION" />
<meta property="og:image" content="http://www.stanford.edu/group/cardinalballet/Pictures/WebsitePics/portrait-placeholder.jpg">
<meta property="og:site_name" content="SITE_NAME"/>
<meta property="og:url" content="http://dl.dropbox.com/u/3618086/test2.html">
</head>
fb:app_id
(应该是您的Facebook应用程序ID)和og:type
。有多个types
,而某些没有发布权限。有关更多信息,请访问Open Graph API documentation。我最初喜欢我的页面是一篇文章,这引起了我的许多问题。将之类的按钮与Facebook SDK一起添加到页面中。
整个过程中最直接的部分。访问您的虚拟页面,然后按赞按钮。
假设您已正确完成前面的步骤,最后一位也应该是直截了当的。我在我的示例中使用curl
,但您应该可以使用任何类型的POST请求来获取它。
获取访问令牌。
curl -F grant_type=client_credentials -F client_id=MY_APP_ID -F client_secret=MY_APP_SECRET -F redirect_uri=https://graph.facebook.com/oauth/access_token https://graph.facebook.com/oauth/access_token
获取产品页面的ID。
curl -g https://graph.facebook.com/\?id\=PAGE_URL
向所有喜欢您的产品页面的人发送消息。
curl -F 'access_token=ACCESS_TOKEN' -F 'message=MESSAGE' -F 'id=ID_FROM_PREVIOUS_ACTION' https://graph.facebook.com/feed
此时,希望一切顺利。作为喜欢该页面的用户,请查看他们的新闻Feed。您应该会看到一个帖子,其中包含您网页上的标题,图片和说明。万岁。
......这就是我解决它的方式。希望这对其他人有价值。如果我错过了任何细节,我会很高兴。