0

我收到有关我的 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>";
}

?>

谢谢

4

1 回答 1

0

问题不在于代码,而在于工作流程。FB 用户体验政策规定,如果用户不断拒绝,应用程序不应重复向用户请求权限。但是,如果用户决定这样做,它还应该为用户提供一种明确的方式来授予这些权限。没有具体的解决方案来实现这种行为,但 FB 建议开发人员将他们的必要和非必要权限请求分开,即仅在登录时请求基本读取权限,然后在应用程序尝试在 FB 上发布内容之前验证您是否具有必要的权限写权限,如果没有,则向用户提供适当的权限请求。

查看FB 权限文档以获取有关可能的开发人员警报和解决这些问题的建议行动方案的更多信息。

于 2013-06-05T10:19:02.003 回答