Facebookログインを行うクラスの簡単なメソッドを開発しました。これはコードです:
public function auth()
{
$config = array(
'appId' => Configure::read('FB.id'),
'secret' => Configure::read('FB.secret'),
'cookie' => true
);
$this->provider = new Facebook($config);
$user = $this->provider->getUser();
debug($user);
debug($_GET['code']);
if ($user)
{
return $user;
}
// Errors?
if (!isset($this->controller->request->query['error']))
{
$params = array(
'scope' => Configure::read('FB.scope'),
'redirect_uri' => Configure::read('FB.callback')
);
// Redirect login page
$this->controller->Session->write('login.redirect', $this->provider->getLoginUrl($params));
}
return false;
}
メソッドは簡単です。私は Facebook SDK の例に従いました。
Facebook が私の redirect_uri を呼び出すと、次のパラメーター (クエリ文字列) を取得するため、ユーザー情報の取得に問題があります。
- 州
- コード
したがって、Facebook からエラーは発生しませんが、getUser() は引き続き 0 を返します。
なんで?
##### 編集: #####
それは本当に奇妙すぎます... FacebookアプリのURIでリダイレクトURIを変更した場合にのみ機能します。変更しました:
https://www.mywebsite.com/panel/
と
https://apps.facebook.com/MY_APP/panel/
それは機能します....うーん、なぜFacebookのURLを使用する必要があるのですか?
PS私はCakePhpを使用しています。このジョブを実行するプラグインがあることは知っていますが、CakePhpから始めたので、それを書くコードを学びます。