2012-12-10 79 views
0

我有我的Facebook应用程序的授权问题。当我在我的本地Web服务器进程正常运行我的应用程序是这样的:与Facebook同步Facebook - 获取Facebook数据

**Get facebook user->If user is not logged on -> Redirect user on facebook login page** 

**Get facebook user->If user is logged on -> Redirect user to authorize my facebook application->everything goes right without problems** 

当我主持我使用iframe的Facebook应用程序,第二种方法不工作(用户从来没有得到证明的授权窗口),和我得到以下异常:

Error validating access token: User xxxxxxx has not authorized application xxxxxxx. 

我用笨的PHP框架,这是我的PHP代码:

$this->load->library('facebook'); 
     $user = null; 
     $user_profile = null; 

     $user = $this->facebook->getUser(); 
     if ($user) { 
      try { 
      // Proceed knowing you have a logged in user who's authenticated. 
      $access_token = $this->facebook->getAccessToken(); 
      $user_profile = $this->facebook->api($user); 

      } 
      catch (FacebookApiException $e) { 
      show_error(print_r($e, TRUE), 500); 
      } 
     } 
     else{ 
      $data = array(
      'redirect_uri' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','scope'=>'email'); 
      $access_token = $this->facebook->getAccessToken(); 
     redirect($this->facebook->getLoginUrl($data)); 

     } 
     $data['facebook']=$user_profile; 
     $this->load->view('templates/header'); 
     $this->load->view('pages/prijavaKlasicnoFacebook', $data); 
     $this->load->view('templates/footer'); 
    } 

回答

0

你不能在iframe装载的OAuth对话框 - 安全原因秒。

你必须将其加载到最顶层的窗口实例 - 所以没有服务器端重定向,但客户端“重定向”使用top.location.href = "…";

让你的脚本输出这个JS代码段(包括正确登录URL)在一个空的文档中。

+0

我不明白我需要做什么? – MrD

+0

再次说明:__not__服务器端重定向,因为您留在iframe中 - 您需要“分离”它,并且只能通过JS完成客户端。因此,生成相应的JS代码,并将其交付给客户端。 – CBroe

+0

好的,谢谢你的回答! – MrD

0

您还应该在您的范围内提供“读取流”和“发布数据”。