2011-12-19 3 views
0

Я пытаюсь опубликовать на стене с помощью запроса на отправку по http с заданным URL-адресом, но я получаю ошибку, не связанную с методом. Что я делаю не так?Опубликовать на стене с помощью Facebook graph

Предполагая, что пользователь уже разрешил мое приложение, и у меня есть токен доступа с разрешениями publish_stream, можно ли создать URL-адрес, который будет размещаться на стене пользователей, используя график facebook?

Вот URL Я использую где [идентификатор] является идентификатор пользователя и [access_token] является маркер доступа:

https://graph.facebook.com/[userid]/feed?message=I like Cheesy Poofs&picture=http://simplyrecipes.com/photos/cheddar-cheese-puffs-b.jpg&link=alink.com&name=Cheesy Poofs Rule!&caption=Some awesome caption&description=cool description bruh&access_token=[access_token] 

Редактировать В ссылке выше я пропускал «метод = пост ». Теперь я получаю идентификатор из следующего URL-адреса.

https://graph.facebook.com/[userid]/feed?method=post&message=I like Cheesy Poofs&picture=http://simplyrecipes.com/photos/cheddar-cheese-puffs-b.jpg&link=alink.com&name=Cheesy Poofs Rule!&caption=Some awesome caption&description=cool description bruh&access_token=[access_token] 
+0

Вы должны сделать фактический запрос HTTP POST, а не просто добавить метод = сообщение в свой запрос GET. Тем не менее, я не знаю, почему они дадут вам удостоверение личности в этом случае. –

+0

Я должен был уточнить, я использую WebRequest в C#, чтобы сделать фактический запрос POST. Сообщение теперь отображается на моей тестовой бизнес-странице. – imnotsean

ответ

0

Вы должны использовать пост, как:

 
$update = $facebook->api('/[userid]/feed', 'post', 
array('message'=> 'your message here', 
'picture' => 'your picture link', 
'link' => 'your link here')); 
+0

Я пишу простой плагин для настольного приложения на C#, который создаст сообщение на стене бизнес-страницы. Поскольку это относительно просто, я не думал, что мне нужно использовать SDK для Facebook. – imnotsean

0

Пример использование PHP ICM подписанного запрос:

<?php 

$signedRequestObject = parse_signed_request($_POST["signed_request"],YOUR_APPLICATION_SECRET); 

if ($signedRequestObject["oauth_token"]){ 
    // there is no token, something went wrong 
    exit; 
} 

$token = $signedRequestObject["oauth_token"]; 

$data = array(
    "message" => "happy joy joy message", 
    "link" => "www.myjoyfullsite.com", 
    "access_token" => $token, 
    "picture" => "www.myjoyfullsite.com/avatar.jpg", 
    "name"=> "funky title", 
    "caption"=> "awesome caption", 
    "description"=> "useful description" 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/".$id."/feed"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$op = curl_exec($ch); 
if (!$op){ 
    echo "Curl Error : ".curl_error($ch); 
    curl_close($ch); 
    exit; 
} 

curl_close($ch); 
$res = get_object_vars(json_decode((string)$op)); 
print_r($res); 

//used functions 
function parse_signed_request($signed_request, $secret) { 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $sig = $this->base64_url_decode($encoded_sig); 
    $data = json_decode($this->base64_url_decode($payload), true); 
    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
    echo 'Unknown algorithm. Expected HMAC-SHA256 : '; 
    return false; 
    } 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) { 
    echo = 'Bad Signed JSON signature!'; 
    return false; 
    } 
    return $data; 
} 

function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 

?> 

Образец JS:

var body = 'Reading JS SDK documentation'; 
FB.api('/me/feed', 'post', { message: body }, function(response) { 
    if (!response || response.error) { 
    alert('Error occured'); 
    } else { 
    alert('Post ID: ' + response.id); 
    } 
}); 

Надеется, что это помогает!

Cheers!

Смежные вопросы