アプリを作成しました。新しいGraph APIを使用して、友達の壁にメッセージを投稿したいと思います。これは可能ですか?
私はすでにoAuthとGraph-apiを使用して、友達全員のリストを取得しています。APIは http://developers.facebook.com/docs/api = cURL https://graph.facebook.com/ [userid]/feed にフィードを読むように指示しますが、メッセージの投稿方法も指示します。
curl -F 'access_token=[...]' -F 'message=Hello, Arjun. I like this new API.' https://graph.facebook.com/arjun/feed
もちろん、これは機能しません!そして、その理由がわかりません。
ここに私のPHPコードがあります:
require_once 'facebook.php'; // PHP-SDK downloaded from http://github.com/facebook/php-sdk
$facebook = new Facebook(array(appId=>123, secret=>'secret'));
$result = $facebook->api(
'/me/feed/',
array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
このコードはエラーをスローしません、そして私は私のaccess_tokenが正しいことを知っています(そうでなければ、$ facebook-> api( '/ me?access_token ='。$ this-> access_token);を実行してユーザーオブジェクトを取得できませんでした。
Graph-apiを使用してメッセージを投稿した人はいますか?それから私はあなたの助けを必要としています! :-)
はい、ようやくこれを解決しました。あなたの助けのためにphpfourに感謝します:-)
まず、私の接続URLは次のようになります( "publish_stream"を使用):
$connectUrl = $this->getUrl(
'www',
'login.php',
array_merge(array(
'api_key' => $this->getAppId(),
'cancel_url' => $this->getCurrentUrl(),
'req_perms' => 'publish_stream',
'display' => 'page',
'fbconnect' => 1,
'next' => $this->getCurrentUrl(),
'return_session' => 1,
'session_version' => 3,
'v' => '1.0',
), $params)
);
2番目;経由でFacebookに投稿しようとしました
$result = $facebook->api(
'/me/feed/',
array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
しかし、これを行う正しい方法は、もう1つのパラメーター( 'post')を含めることです。
$result = $facebook->api(
'/me/feed/',
'post',
array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
フィードに書き込むには、「publish_stream」拡張権限が必要です。以下にそれらの完全なリストを示します: http://developers.facebook.com/docs/authentication/permissions 。
拡張権限を取得するには、次の方法で認証トークンを取得します。
https://graph.facebook.com/oauth/authorize?
client_id=...&
redirect_uri=http://www.example.com/callback&
scope=publish_stream
chfに加えて、
投稿後:
$getLinkToken='https://graph.facebook.com/oauth/access_token'.
'?client_id=YOUR_APPID'.
'&redirect_uri=YOUR_SITE'.
'&client_secret=YOUR_SECRET'.
'&code=CODE_KEY';
私は応答を得ました:
https://graph.facebook.com/oauth/access_token?
client_id=xxxxxxxxxxxxxx
&redirect_uri=myurl
&client_secret=xxxxxxxxxxxxxx
&code=xxxxxxxxxxxxxx
どちらがaccess_token
、client_secret
またはコード
$facebook->api( '/YOUR_APPID/feed/', 'post',
array('access_token' => $this->access_token,
'message' => 'Playing around with FB Graph..'));
明確にするために、ここでの「投稿」とは、GET/POSTのようにHTTPメソッドを指します。参照 https://github.com/facebook/php-sdk/blob/master/src/base_facebook.php :protected function _graph($ path、$ method = 'GET'、$ params = array ())
$ result = $ facebook-> api( '/ me/feed /'、 'post'、array( 'access_token' => $ this-> access_token、 'message' => 'Playing playing with FB Graph ..')) ;
リンクのとおり: ここにリンクの説明を入力
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_POST_LOGIN_URL";
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=email";
echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$access_token = file_get_contents($token_url);
$graph_url="https://graph.facebook.com/me/permissions?".$access_token;
echo "graph_url=" . $graph_url . "<br />";
$user_permissions = json_decode(file_get_contents($graph_url));
print_r($user_permissions);
?>
それはアクセスを得るための古い方法です。グラフで最初に私はcodeキーを生成しました:
$getLinkCode ='https://graph.facebook.com/oauth/authorize'.
'?client_id=YOUR_APPID'.
'&redirect_uri=YOUR_SITE'.
'&scope=publish_stream';
そしてcodeキーがあると、リンクからaccess_tokenを生成できます:
$getLinkToken='https://graph.facebook.com/oauth/access_token'.
'?client_id=YOUR_APPID'.
'&redirect_uri=YOUR_SITE'.
'&client_secret=YOUR_SECRET'.
'&code=CODE_KEY';
しかし、このaccess_tokenはメッセージをUSER NOT APPLICATIONとして投稿します...なぜですか?!
アプリケーションウォールに投稿したい場合:
$facebook->api( '/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..'));
以下のコードを使用する代わりに
[facebook dialog:@"feed"
andParams:params
andDelegate:self];
次の解決策を使用してください
[facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];