【问题标题】:PHP loop issues with facebook app authfacebook 应用程序身份验证的 PHP 循环问题
【发布时间】:2011-08-30 15:41:26
【问题描述】:

我正在使用最新的 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>

【问题讨论】:

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


    【解决方案1】:

    尝试这样的事情,因为您需要以一种或另一种方式存储访问令牌。从那个 sn-p 很难知道你在做什么(或不做什么)。

    <?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  
    

    【讨论】:

    • 我已经尝试添加一个 response_type(令牌和代码)。但它并没有改变任何东西。我的重定向不断循环,我仍然得到用户拒绝响应。
    • 您必须确保令牌有效。当您尝试查看令牌是否有用时,请尝试输出从 Facebook 获得的错误,而不是重定向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多