Facebook App的登录对话循环警报

时间:2013-06-01 18:22:34

标签: facebook

我收到了Facebook应用程序的提醒,其中显示“您的应用在拒绝权限请求后会反复将用户重定向到登录对话框。请更新您的应用,使其符合我们的平台政策,以提供出色的用户体验。”

任何人都可以帮我修复它。这是代码

    <?php
if (!empty($_GET['i'])) {
  session_start();
  $_SESSION['imguris'] = $_GET['i']; 
}

require( '../../../../wp-load.php' );

$toptions = get_option('sample_theme_options');

if (!empty($toptions['fbappid']) && !empty($toptions['fbapisecret'])) {

    $fbconfig['appid' ]     = $toptions['fbappid'];
    $fbconfig['secret']     = $toptions['fbapisecret'];
    $fbconfig['baseurl']    = get_bloginfo('template_url')."/fb/index.php";
    //print_r($fbconfig);

    if (isset($_GET['request_ids'])){

    }

    $user            =   null; //facebook user uid
    try{
        include_once "facebook.php";
    }
    catch(Exception $o){
        error_log($o);
    }

    $facebook = new t_Facebook(array(
      'appId'  => $fbconfig['appid'],
      'secret' => $fbconfig['secret'],
      'cookie' => true,
    ));

    $user       = $facebook->getUser();    
    $loginUrl   = $facebook->getLoginUrl(array(
                'scope'         => 'publish_stream',
                'redirect_uri'  => $fbconfig['baseurl'])
    );

    function d($d){
        echo '<pre>';
        print_r($d);
        echo '</pre>';
    }

    if (!$user) { ?>
        <script type="text/javascript"> 
        window.top.location.href="<?php echo $loginUrl; ?>"; 
        </script>
    <?php } ?>

    <?php if ($user){
        if (isset($_SESSION['imguris'])) {
            $imguri = str_replace(get_option('home'), "", $_SESSION['imguris']);
            $imguri = '../../../../'.$imguri;               
            $facebook->setFileUploadSupport(true);
            $args = array('message' => $toptions['covtitle']);
            $args['image'] = '@' . realpath($imguri);
            try {
                    $data = $facebook->api('/'.$user.'/photos', 'post', $args);
                    //print_r($data);
            } catch (t_FacebookApiException $e) {
                    //d($e);
            }
            if (isset($data['id'])) {
                if (isset($toptions['instructionsurl'])) {
                    $redir = $toptions['instructionsurl'];
                } else {
                    $redir = get_option('home');
                }
                echo "<script type='text/javascript'> window.top.location.href='".$redir."'; </script>";
            }
        }
    } 

} else {
    if (isset($toptions['instructionsurl'])) {
        $redir = $toptions['instructionsurl'];
    } else {
        $redir = get_option('home');
    }
    echo "<script type='text/javascript'> window.top.location.href='".$redir."'; </script>";
}

&GT;

由于

1 个答案:

答案 0 :(得分:0)

问题不在于代码,而在于工作流程。 FB用户体验策略声明,如果应用程序不断拒绝,则应该不会反复询问用户权限。但是,如果用户决定,也应该为用户提供明确的授予权限的方法。没有特定的解决方案来实现此行为,但FB建议开发人员分离他们的基本和非必要的权限请求,即只要求登录时的基本读取权限,然后在应用程序尝试在FB上发布内容之前验证您是否有必要写权限,如果没有,则向用户显示相应的权限请求。

查看FB permissions documentation以获取有关可能的开发者提醒的更多信息以及解决这些问题的建议行动方案。

相关问题