まず、CodeIgniter と Elliot Haughin が作成した Facebook クラスを使用していると言ってみましょう。http://www.haughin.com/code/facebook/私が持っている作業はすべて順調です。しかし、さまざまな FB アカウントでコードをテストしていたときに、評価したい問題に出くわしましたが、私の試みは失敗しました。私はググって他のフォーラムにアクセスしましたが、最初に思いついた答えを一貫して思いついています. 必ず機能するはずですが、この場合は機能しないようです..
私がそう言ったので、私の問題は..FBが返すオブジェクトには、常に特定のエントリがあるとは限りません。この例のために、ユーザー名を言います..
ユーザー名とともに返されるデータの例を次に示します。
facebookResponse Object
(
[__construct:private] =>
[__resp] => stdClass Object
(
[data] => stdClass Object
(
[id] => 0000000000000
[name] => Random.User
[first_name] => Random
[middle_name] => ...
[last_name] => User
[link] => http://www.facebook.com/profile.php?id=000000000
[birthday] => 11/26/1980
[gender] => male
[timezone] => -4
[locale] => en_US
[verified] => 1
[updated_time] => 2011-05-30T19:24:53+0000
)
ユーザー名のない例を次に示します。
facebookResponse Object
(
[__construct:private] =>
[__resp] => stdClass Object
(
[data] => stdClass Object
(
[id] => 000000000000000000000
[name] => Random User
[first_name] => Random
[last_name] => User
[link] => http://www.facebook.com/Random.User
[username] => Random.User
[birthday] => 11/10/1985
[hometown] => stdClass Object
(
[id] => 000000000000000
[name] => Coventry, Connecticut
)
[location] => stdClass Object
(
[id] => 00000000000000
[name] => San Jose, California
)
これをトラブルシューティングしようとして最後に失敗した試みは、次のようになります..
$fb_result = $this->facebook->call('get', 'me', array('metadata' => 1));
$fbFirstName = $fb_result->first_name;
$fbLastName = $fb_result->last_name;
$fbUserName = $fb_result->username;
$fbUserId = $fb_result->id;
$fbHomeTown = $fb_result->hometown->name;
$fbLocation = $fb_result->location->name;
echo "<strong>First Name: </strong>"; if((isset($fbFirstName))AND(!empty($fbFirstName))AND(trim($fbFirstName) !== "")){echo $fb_result->first_name ."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Last Name: </strong>"; if((isset($fbLastName))AND(!empty($fbLastName))AND(trim($fbLastName) !== "")){echo $fb_result->last_name."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Username: </strong>"; if((isset($fbUserName))AND(!empty($fbUserName))AND(trim($fbUserName) !== "")){echo $fb_result->username."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>User FB ID: </strong>"; if((isset($fbUserId))AND(!empty($fbUserId))AND(trim($fbUserId) !== "")){echo $fb_result->id."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Location hometown: </strong>"; if((isset($fbHomeTown))AND(!empty($fbHomeTown))AND(trim($fbHomeTown) !== "")){echo $fb_result->hometown->name."<br />"; }else{ echo "Not found.<br />"; }
echo "<strong>Location current (manual input): </strong>"; if((isset($fbLocation))AND(!empty($fbLocation))AND(trim($fbLocation) !== "")){echo $fb_result->location->name."<br />"; }else{ echo "Not found.<br />"; }
ただし、最初に変数として定義してから if-else でチェックする場所でそれを行うと、現在は機能しています。エラーで「オブジェクト以外のプロパティを取得しようとしています」というメッセージが表示されます。つまり、そこにないため、変数として設定しようとしているにもかかわらず、エラーが発生すると思います。私はこの問題を解決するために 1 日と昨日の大部分を費やしましたが、行き詰まっていると言わざるを得ません。PHPエラータイプは単なる「通知」に過ぎませんが、私は一般的に、そのようなエラーが戻ってくるような状態にコードを残すことは好きではありません..それは私が迷っている..