Для начала, я потратил несколько часов в поисках ответа и пришел ЗАКРЫТЬ, но не нашел полного ответа.
Итак, я пытаюсь опубликовать действия с помощью API Graph Facebook и хочу отправить параметры в URL при первоначальном вызове его с помощью Javascript SDK Facebook.
Вот вызов, который работает:
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.
Это не идеально для моих целей.
Итак, я взглянул на эту ветку , и это помогло, но, как вы увидите, не отвечает на все вопросы.
Так что, если я изменю object.php, чтобы включить динамически генерируемые метатеги, используя содержимое из GET или POST, и использую Object Debugger с форматом URL, соответствующим формату, предоставленному в og: url, Отладчик показывает, что все работает так, как я ожидал, теперь с предупреждениями. Вот как выглядит динамически сгенерированный 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, все работает нормально, и метатеги возвращают содержимое с этим именем внутри них. Однако, если я пытаюсь передать тот же URL-адрес в вызове Javascript, он возвращает ошибку, говорящую, что мое мета-свойство 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 используется только для примера.
Есть мысли?