2

Facebook経由でユーザーにログインさせたい。私はこのコードを使用しています:

  <?php

    require 'include/facebook.php';
    require 'include/fbconfig.php';
    require 'include/user.php';

    $facebook = new Facebook(array(
                'appId' => APP_ID,
                'secret' => APP_SECRET,
                'cookie' => true
            ));

    $session = $facebook->getSession();

    if (!empty($session)) {
        # Active session, let's try getting the user id (getUser()) and user info (api->('/me'))
        try {
            $uid = $facebook->getUser();
            $user = $facebook->api('/me');
        } catch (Exception $e) {

        }

        if (!empty($user)) {
            # User info ok? Let's print it (Here we will be adding the login and registering routines)
            echo '<pre>';
            print_r($user);
            echo '</pre><br/>';
            $username = $user['name'];
            $user = new User();
// check user method insert login information to my database and return the result
            $userdata = $user->checkUser($uid, 'facebook', $username);
            if(!empty($userdata)){
                session_start();
                $_SESSION['id'] = $userdata['id'];
                $_SESSION['oauth_id'] = $uid;
                $_SESSION['username'] = $userdata['username'];
                $_SESSION['oauth_provider'] = $userdata['oauth_provider'];
                header("Location: test.php");
            }
        } else {
            # For testing purposes, if there was an error, let's kill the script
            die("There was an error.");
        }
    } else {
        # There's no active session, let's generate one
        $params = array(
         'scope' => 'email'
      );
        $login_url = $facebook->getLoginUrl($params);
        header("Location: " . $login_url);
    }
    ?>

このページを実行すると、Facebookのホームページ(自分のアカウント)にリダイレクトされるという問題があります。

どうか、何かアイデアはありますか?
あなたの投稿には、コードセクションを説明するためのコンテキストがあまりありません。シナリオをより明確に説明してください。

4

3 に答える 3

6

最新の PHP SDK を使用していますか? こちらから最新の SDK を入手してから、もう一度お試しください。

[編集]

getSession()へのすべての参照をに 置き換えますgetUser()

例:

$session = $facebook->getSession();

それは言うべきです:

$session = $facebook->getUser();

ref: PHP SDK v3.0.0 へのアップグレード

于 2012-12-25T10:43:43.750 に答える
2

これは確実に機能します-

$user=NULL ;
$user       = $facebook->getUser();
if($user)
{
    $loginUrl   = $facebook->getLoginUrl(
       array(
              'scope'         => 'email',
              'redirect_uri'  => 'https://appurl'
            )
    );
} 
于 2012-12-25T13:52:52.847 に答える
1

ログインしている場合、ログインページは表示されません。

ログアウトして、コードが機能するかどうかを確認してください。

于 2012-12-25T09:44:17.847 に答える