まず、Facebook PHP SDK をダウンロードし、ここで最初の回答を適用しました: Using Facebook PHP-SDK 3.x to register/login user with Codeigniter 2.1.0
私のコントローラーで:
ユーザーを取得しようとしています: $this->facebook->getUser(); .. 0 の場合は、別の関数 $this->facebook_login(); を呼び出します。-そうでなければ、たとえば名前のようなデータをデータベースに保存します。
facebook_login() では、ログイン URL が生成されます: $this->facebook->getLoginUrl() - ビューに渡されて表示されます。
これまでのところ、ログイン URL をクリックすると、Facebook にリダイレクトされ、承認と認証などが求められます。その後、「1」のページにリダイレクトされます。
問題は、getUser がゼロを返すことです。$ SESSION 変数を出力したところ、fb {appId}_state のみが設定されていることがわかりました。
次のコードを使用して、CI フォルダーにない別の php ファイル (login.php) を作成しようとしました。
<?php
define('BASEPATH', '');
require_once('application/libraries/facebook.php');
$fb = new Facebook(array('appId'=>'...', 'secret'=>'...'));
$user = $fb->getUser();
if($user == 0){
$login = $fb->getLoginUrl();
echo '<a href="'.$login.'">Login</a>';
} else {
print_r($fb->api('/me'));
}
?>
login.php にアクセスしてから上記の「1」のページにアクセスすると、getUser はユーザー ID を返し、$_SESSION にはユーザーの詳細が含まれます。したがって、問題は CodeIgniter にあると思いますが、解決方法がわかりません。
いくつかの解決策を検索して試しましたが、それが私ができる最善の方法です。可能であれば、JS SDK を使用したくありません。
ありがとうございました