Facebook app auth的PHP循环问题

时间:2011-08-30 15:41:26

标签: php facebook infinite-loop facebook-php-sdk

我正在使用最新的PHP-SDK(3.11),当用户第一次使用我的应用时,我遇到了问题。应用程序产生无限循环。 当用户必须授予应用程序权限时,他将被重定向到:

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>

1 个答案:

答案 0 :(得分: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