わかりましたので、これが問題です。機能的な結果が得られずに、Facebookのドキュメントとグーグルを一日中検索しています。
私の目標は、Facebook メッセンジャー アプリケーションと同じように、Facebook メッセージを取得して送信できるアプリケーションを作成することです。すでに半機能コードを heroku でホストしており、ログインしているユーザーからデータを読み取る許可を求めることができました。アプリ。
facebook php SDK と次のコード行を使用して、ログインしているユーザー (この場合は自分のアカウント) の情報の一部を取得できます。
//the facebook object is created
$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'sharedSession' => true,
'trustForwarded' => true,
));
$user_id = $facebook->getUser();
if ($user_id) {
try {
// Fetch the viewer's basic information
$basic = $facebook->api('/me');
} catch (FacebookApiException $e) {
// If the call fails we check if we still have a user. The user will be
// cleared if the error is because of an invalid accesstoken
if (!$facebook->getUser()) {
header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
exit();
}
}
// This fetches some things that you like . 'limit=*" only returns * values.
// To see the format of the data you are retrieving, use the "Graph API
// Explorer" which is at https://developers.facebook.com/tools/explorer/
$likes = idx($facebook->api('/me/likes?limit=4'), 'data', array());
// This fetches 4 of your friends.
$friends = idx($facebook->api('/me/friends?limit=4'), 'data', array());
// And this returns 16 of your photos.
$photos = idx($facebook->api('/me/photos?limit=16'), 'data', array());
ここまでで、「いいね」「友達」「写真」の 3 つの配列があり、これらを foreach サイクル内に配置し、idx() メソッド (関数が何であるかはわかりません) を使用することで簡単にエコーできます。 :
<section id="samples" class="clearfix">
<h1>Examples of the Facebook Graph API</h1>
<div class="list">
<h3>A few of your friends</h3>
<ul class="friends">
<?php
foreach ($friends as $friend) {
// Extract the pieces of info we need from the requests above
$id = idx($friend, 'id');
$name = idx($friend, 'name');
?>
<li>
<a href="https://www.facebook.com/<?php echo he($id); ?>" target="_top">
<img src="https://graph.facebook.com/<?php echo he($id) ?>/picture?type=square" alt="<?php echo he($name); ?>">
<?php echo he($name); ?>
</a>
</li>
ユーザーの受信トレイにあるすべてのメッセージを取得しようとすると問題が発生します (取得する権限があることに注意してください)。次のコードを使用してメッセージを要求します。
$messages = $facebook->api('/me/inbox');
しかし、多くのネストされた配列を返すようで、そこから使用可能なデータを取得できません。私は他の方法と同じように foreach メソッドを試してきましたが、エコーするのは毎回「配列」だけです。
$messages オブジェクトに対して var_dump メソッドを使用したところ、ネストされた配列の階層が表示されましたが、そこから情報を取得する方法がわかりません。エコーされた文字列の一部を次に示します。
array(25) { [0]=> array(6) { ["id"]=> string(13) "[idnumbersIcantshow]" ["to"]=> array(1) { ["data"]=> array(2) { [0]=> array(2) { ["name"]=> string(12) "MyName" ["id"]=> string(10) "idnumbersIcantshow" } [1]=> array(2) { ["name"]=> string(9) "TheOtherPersonName" ["id"]=> string(10) "idnumbersIcantshow" } } } ["updated_time"]=> string(24) "2012-12-31T05:35:28+0000" ["unread"]=> int(0) ["unseen"]=> bool(false) ["comments"]=> array(2) { ["data"]=> array(25) { [0]=> array(4) { ["id"]=> string(16) "idnumbersIcantshow" ["from"]=> array(2) { ["name"]=> string(9) "TheOtherPersonName" ["id"]=> string(10) "idnumbersIcantshow" } ["message"]=> string(24) "Message That Was Sent That I wont show" ["created_time"]=> string(24) "2012-10-13T04:11:24+0000" } [1]=> array(4) { ["id"]=> string(16) "idnumbersIcantshow" ["from"]=> array(2) { ["name"]=> string(9) "TheOtherPersonName" ["id"]=> string(10) "idnumbersIcantshow" } ["message"]=> string(53) "Another Message Sent which I wont show either" ["created_time"]=> string(24) "2012-10-13T04:11:41+0000" } [2]=> array(4) { ["id"]=> string(16) "idnumbersIcantshow" ["from"]=> array(2) { ["name"]=> string(12) "MyName" ["id"]=> string(10) "idnumbersIcantshow" } ["message"]=> string(45) "More private bla bla bla" ["created_time"]=> string(24) "2012-10-13T04:12:24+0000" } [3]=> array(4) { ["id"]=> string(16) .... and it keeps going with all my conversations
この情報を次のような美しくシンプルな変数に入れるにはどうすればよいですか:
&conversationParticipantsArray
$messagesArray
{
$from
&message
}
主にそのデータを取得したい。これは、あまり役に立たない foreach コードです。
foreach($messages as $message)
{
?>
<div id="messages">
<?php echo var_dump($message);?>
</div>
あなたが私を助けてくれることを願っています。