Facebookのグラフを使って壁に投稿する

私は与えられたURLでHTTP投稿要求を使用して壁に投稿しようとしていますが、実装されていないエラーが発生しています。私は間違って何をしていますか?

ユーザーが既にアプリを承認していて、publish_stream権限を持つアクセストークンを持っていると仮定すると、Facebookのグラフを使ってユーザーの壁に投稿するURLを作成することは可能ですか?

ここで私が使用しているURLは、[userid]はユーザID、[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]

Edit In the link above I was missing "method=post". I now get an ID back from the following 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
GETリクエストにmethod = postを追加するだけでなく、実際のHTTP POSTリクエストを作成する必要があります。つまり、私はなぜ彼らにあなたにIDを与えるのか分からない。
追加された 著者 Mike Ruhlin,
私は明らかにすべきです、私は実際のPOST要求を行うためにC#でWebRequestを使用しています。投稿は現在テスト用のビジネスページに表示されています。
追加された 著者 imnotsean,

2 答え

あなたはポストを使うべきです:

$update = $facebook->api('/[userid]/feed', 'post', 
array('message'=> 'your message here', 
'picture' => 'your picture link',
'link' => 'your link here'));
0
追加された
私はビジネスページの壁にポストを作成するC#のデスクトップアプリケーションのための単純なプラグインを書いています。これは比較的簡単なので、私はFacebookのC#SDKを使う必要はないと思っていました。
追加された 著者 imnotsean,

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);
  }
});

それが役に立てば幸い!

乾杯!

0
追加された