しばらくこのサイトで答えを探していましたが、この問題の答えを見つけることができなかったので、誰かが私に手を差し伸べてくれることを願っています. 私はPHPプログラマーの経験がまったくないので、私がやっていることに深刻な問題がある可能性があります。
とにかく、私は PHP でまったくコーディングせず、Facebook 情報にアクセスする必要がある別の開発者と協力しています。そうは言っても、私はすべての Facebook グラフ呼び出しをカプセル化する Facebook クラスを開発しようとしています。これにより、友人が単一の関数を呼び出して、Facebook PHP SDK 関数を気にすることなく必要なすべての情報を取得できるようになります。まったく。このクラスは、CFacebook.php という別のファイルに入れました。このクラスのコードは以下にあります (Facebook の Web サイトから例をコピーしただけです)。
<?php
require_once 'facebook.php';
class CFacebook
{
//private variables
private $Config = "";
private $FBObject = "";
private $Code = "";
private $Session = "";
private $AppId = '*************';
private $ApiSecret = '*******************';
//I have the API secret and AppID in
//here but for privacy reasons I've taken them out
//constructor
public function CFacebook()
{
$this->FBObject = new Facebook();
$this->FBObject->setApiSecret($this->ApiSecret);
$this->FBObject->setAppId($this->AppId);
}
//Get profile information
public function GetFBProfileInformation()
{
$FBProfile = "";
$ID = $this->FBObject->getUser();
echo "<br />";
if($ID)
{
try {
$FBProfile = $this->FBObject->api('/me','GET');
return $FBProfile;
}catch (FacebookApiException $e)
{
//send back to UI to have user sign in
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
echo "has ID <br />";
$login_url = $this->FBObject->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
echo $this->FBObject->getAccessToken()."<br />";
echo $this->FBObject->getApiSecret()."<br />";
error_log($e->getType());
error_log($e->getMessage());
}
}else
{
//return to UI taht user isn't logged in and have user re-sign in
//If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
$Page = "http://fratlabs.com/FacebookTest.php";
$login_url = $this->FBObject->getLoginUrl(array('scope'=>'email,publish_stream,user_likes,user_hometown','redirect_uri'=>$Page));
//$logout_url = $this->FBObject->getLogoutUrl(array('next'=>'http://fratlabs.com/FacebookTest.php'));
echo 'Please <a href="' . $login_url . '">login.</a>';
//echo 'Logout Url: <a href="'. $logout_url.'">Logout</a>';
error_log($e->getType());
error_log($e->getMessage());
}
//echo $this->FBObject->getLogoutUrl(array('next'=>'http://fratlabs.com/FacebookTest.php'));
}
};
?>
このクラスは、Facebook ログインも返されるテスト ページに含まれてインスタンス化されます。Facebookログインが返されるページと同じページにこれらすべての呼び出しを含める必要があるのでしょうか? 私を混乱させている唯一のことは、ブルームーンごとにコードが機能し、実際にFacebookへのリンクを作成することですが、1回おきに「ログインしてください」リンクが表示されたログインページを見つめたままになることです。