2011-08-30 95 views
2

我正在使用最新的PHP-SDK(3.11),當用戶第一次來我的應用程序時,我遇到了問題。該應用程序使無限循環。 當用戶必須給權限的應用程序,他將被重定向到:PHP循環問題與Facebook應用程序驗證

https://www.facebook.com/connect/uiserver.php?app_id=**myappId**&method=permissions.request&display=page&next=http%3A%2F%2Fapps.facebook.com%2F**myApp**%2F&response_type=code&state=**theSate**&canvas=1&perms=user_birthday%2Cuser_location%2Cuser_work_history%2Cuser_about_me%2Cuser_hometown 

,當他接受我有以下鏈接返回:

http://apps.facebook.com/**myApp**/?error_reason=user_denied&error=access_denied&error_description=***The+user+denied+your+request.***&state=**theSate**#_ 

我不明白爲什麼訪問當用戶點擊「允許」時被拒絕。

if ($this->fbUser) { 
      .... Do Somthing 
     } else { 
      $this->loginUrl = $this->fb->facebook->getLoginUrl(array(
         'scope' => implode(',', sfConfig::get('app_facebook_perms') 
      ), 'next' => 'http://apps.facebook.com'. sfConfig::get('app_facebook_app_url'))); 


      $this->logMessage($this->loginUrl, 'info'); 
      sfConfig::set('sf_escaping_strategy', false); 
     } 

     <script type='text/javascript'> 
      top.location.href = "echo $this->loginUrl "; 
     </script> 

回答

0

嘗試這樣的事情,因爲您需要以某種方式存儲訪問令牌。很難知道你正在做什麼(或不做)從該片段。

<?php 
# We require the library 
require("facebook.php"); 

# Creating the facebook object 
$facebook = new Facebook(array( 
    'appId' => 'APP_ID_HERE', 
    'secret' => 'APP_SECRET_HERE', 
    'cookie' => true 
)); 

# Let's see if we have an active session 
$session = $facebook->getUser(); 

if(empty($session)) { 
    # There's no active session, let's generate one 
    $url = $facebook->getLoginUrl(array( 
     "response_type"=>"token", //Can also be "code" if you need to 
     "scope" => 'email,user_birthday,status_update,publish_stream,user_photos,user_videos' , 
     "redirect_uri"=> "http://test.com" //Your app callback url 
    )); 
    header("Location: $url"); 
    exit; 
} 
// user is logged in 
+0

我試圖添加一個response_type(令牌和代碼)。但它並沒有改變任何東西。我的重定向不斷循環,我仍然得到用戶拒絕的響應。 – FFw

+0

您必須確保令牌有效。嘗試查看令牌是否有用時,嘗試輸出從Facebook獲得的錯誤,而不是重定向。 –