2013-03-09 78 views
2

我想在Yii框架中使用Facebook连接。

问题是我想访问用户的电子邮件地址和 $ facebook-> api('/ me')正在返回NULL。

如何解决该问题?

这里是我的代码:

<?php 
Yii::import("ext.fconnect.*"); 
     $app_id = "xxx"; 
     $app_secret = "xxxx"; 
     Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; 

     $facebook = new Facebook(array(
      'appId' => $app_id, 
      'secret' => $app_secret, 
     )); 



     $user = $facebook->getUser(); 
     if ($user) { 

      try {     
       $user_profile = $facebook->api('/me'); 
      } catch (FacebookApiException $e) { 
       $user_profile = $e; 
       $user = NULL; 
      } 

     } 

     if ($user) { 

      $d["logoutUrl"] = $facebook->getLogoutUrl(array(
       'fblogout' => 'true',   
       'next' => $this->createAbsoluteUrl("main/signout") 
      )); 



      $d["user_info"] = $facebook->api('/' . $user); 

     } else { 

      $d["loginUrl"] = $facebook->getLoginUrl(array(
       'scope' => 'email, read_stream, publish_stream, user_birthday, user_location, user_work_history, user_hometown, user_photos', 
       'redirect_uri' => $this->request->hostInfo . $this->request->url, 
      )); 
     } 
     $d["user"] = $user; 
     $d["userprofile"] = $user_profile; 
+0

似乎'$ facebook-> getUser()'由于最新的SDK更改而出现问题。它总是返回0. – deadlock 2013-03-09 12:52:50

+0

伟大的分机存在https://github.com/Nodge/yii-eauth。我曾经在一个项目中验证用户身份。 – 2013-03-09 17:37:25

+0

我删除了$ facebook-> api(“/ me”);从try catch块开始,一切开始为我工作。 :) – 2013-03-10 08:06:52

回答

2

行:

$d["user_info"] = $facebook->api('/' . $user); 

看来我错了。我不知道什么数据类型$user会是;我只是使用$facebook->api('/me');,那会给你当前登录和认证用户的配置文件。