首先,我花了几个小时寻找答案并且已经关闭但没有找到完整的答案。
所以我试图使用Facebook的Graph API发布动作,并希望在最初使用Facebook Javascript SDK调用时在URL中发送参数。
这是一个名为WORKS的电话:
function postNewAction()
{
passString = '&object=http://mysite.com/appnamespace/object.php';
FB.api('/me/APP_NAMESPACE:ACTION' + passString,'post',
function(response) {
if (!response || response.error) {
alert(response.error.message);
}
else {
alert('Post was successful! Action ID: ' + response.id);
}
}
);
}
使用object.php如下:
<head xmlns:enemysearch="http://apps.facebook.com/APP_NAMESPACE/ns#">
<meta property="fb:app_id" content="APP_ID" />
<meta property="og:type" content="APP_NAMESPACE:object" />
<meta property="og:title" content="some title" />
<meta property="og:description" content="some description"/>
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="http://www.mysite.com/appnamespace/object.php"/>
</head>
很明显,上面会向Facebook发布一些动作,每次调用object.php时都会一样。
这对我来说并不理想。
所以我看了this thread并且它有所帮助,但正如您将看到的,并没有回答所有问题。
因此,如果我通过使用来自GET或POST的内容更改object.php以包含动态生成的元标记,并使用与og:url中提供的URL格式匹配的Object Debugger,则调试器会显示所有内容正如我现在所预期的那样工作警告。以下是动态生成的object.php的样子:
<?php
if(count($_GET) > 0) {
$userName = (int)$_GET['userName'];
}
else {
$userName = (int)$_POST['userName'];
}
?>
<head xmlns:enemysearch="http://apps.facebook.com/APP_NAMESPACE/ns#">
<meta property="fb:app_id" content="APP_ID" />
<meta property="og:type" content="APP_NAMESPACE:object" />
<meta property="og:title" content=" <?php echo $userName; ?>" />
<meta property="og:description" content="Click to view more from <?php echo $userName; ?>"/>
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="http://mysite.com/appnamespace/object.php?userName=<?php echo $userName; ?>"/>
</head>
所以,我需要知道的是如何在初始调用中发送url参数。如果我使用调试器并输入http://mysite.com/appnamespace/object.php?userName=Brad的效果,一切正常,元标记返回其中包含该名称的内容。但是,如果我尝试在Javascript调用中传递相同的url,它会返回一个错误,说我的元属性og:type需要是'APP_NAMESPACE:object'(如上所示,这就是我所拥有的)而不是'website '(正如你在上面看到的,是我没有使用的东西)。这是破碎的电话会是什么样的:
function postNewAction(userName)
{
passString = '&object=http://mysite.com/appnamespace/object.php?userName=' + userName;
FB.api('/me/APP_NAMESPACE:ACTION' + passString,'post',
function(response) {
if (!response || response.error) {
alert(response.error.message);
}
else {
alert('Post was successful! Action ID: ' + response.id);
}
}
);
}
要明确的是,userName变量仅用于举例。
有什么想法吗?
答案 0 :(得分:2)
我没有对它进行测试,但我看到的内容与此链接中的代码示例不同
http://developers.facebook.com/docs/opengraph/tutorial/#publish
在您的代码中passString
应该以{{1}}开头,因为它是查询字符串的开头。
?