2012-12-25 37 views
2

我想让用户通过Facebook登录。我正在使用此代码:facebook getlogin url不起作用

<?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主页(到我的帐户)。

请问,有什么想法?
您的帖子没有太多的上下文来解释代码段;请更清楚地解释你的情况。

+0

我没有登录到我的Facebook帐户。它将我重定向到Facebook登录。登录后,显示错误消息: API错误代码:100 API错误说明:无效参数 错误消息:请迁移到OAuth2并使用新的/ dialog/oauth端点。 return_session不再可用 – Kamal

回答

6

您是否使用最新的PHP SDK?

$session = $facebook->getSession(); 

应该说:从here获取最新的SDK,然后再试..

将帖子

getUser()

实例替换为getSession()所有引用:

$session = $facebook->getUser(); 

编号:Upgrade to PHP SDK v3.0.0

+0

我下载了新的sdk。但另一个错误显示是: 致命错误:调用未定义的方法Facebook :: getSession() – Kamal

+0

我编辑了该评论,请检查.. –

+0

非常感谢。我尝试了很多东西,但是我没有意识到我使用的是旧版本的sdk。 @ Sahil – Kamal

1

如果您已经登录,您不会登录登录页面。

尝试注销并检查您的代码是否有效。

+0

facebook对话框(询问我的权限)没有显示给我 – Kamal

2

这肯定会工作 -

$user=NULL ; 
$user  = $facebook->getUser(); 
if($user) 
{ 
    $loginUrl = $facebook->getLoginUrl(
     array(
       'scope'   => 'email', 
       'redirect_uri' => 'https://appurl' 
      ) 
    ); 
}