1

これはオプションの権限ですが、キャンバス アプリでスキップすることはできません。この権限で「スキップ」をクリックすると、ページがリダイレクトされ、何度も何度もこの権限を要求されます。なぜこれが起こっているのか誰にも分かりますか?

どうもありがとう!:)

<!-- BEGINNING OF THE INDEX.PHP CODE -->
<?php

  //SOLVES INFINITE LOOP ON IE
  header('P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

  // Enforce https on production
  if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
    header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit();
  }

  $facebook = new Facebook(array(  'appId'  => AppInfo::appID(),  'secret' => AppInfo::appSecret(), ));

  $user_id = $facebook->getUser();

  //Check if we have an user_id
  if ($user_id!="0") {

        try {
          // Fetch the viewer's basic information
          $basic = $facebook->api('/me');
        } catch (FacebookApiException $e) {
          // If the call fails we check if we still have a user. The user will be
          // cleared if the error is because of an invalid accesstoken
          if (!$facebook->getUser()) {
            header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
            exit();
          }
        }

  } else { 

    // If the user is not connected to the application, redirect the user to authentication page 
    $login_url = $facebook->getLoginUrl(array('redirect_uri' => "https://apps.facebook.com/APP_NAME_SPACE/",'scope' =>  'publish_stream,email','display' => 'page')); 

    ?><html xmlns="https://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
       <head>
       </head>
       <body>
       <script type="text/javascript"> top.location.href='<?php echo $login_url; ?>'</script> 
      </body>
      </html><?php   

        exit();
  }

  if(isset($basic)) {

    $locale=idx($basic, 'locale');
    $name=he(idx($basic, 'name'));
    $email=he(idx($basic, 'email'));

  } else {

    // IF the user is not loggin on facebook, redirect the user to facebook login page
    ?>
  <script type="text/javascript">
    var oauth_url = 'https://www.facebook.com/dialog/oauth/';
    oauth_url += '?client_id=APP_ID';
     oauth_url += '&redirect_uri=' + encodeURIComponent('https://apps.facebook.com/APP_NAME_SPACE/');
     oauth_url += '&scope=publish_stream,email'
     window.top.location = oauth_url;
    </script>
<?php
    exit();
    //ends execution if there's no login
  }


  ?>
<html>
 // APP HTML CODE
</html>
4

2 に答える 2

3

あなたの認証コードを見ずに確認するのは難しいですが、私はあなたが持っていると確信しています

  • 付与された権限を確認し、一部が欠落している場合にダイアログにリダイレクトされるか、または
  • FB.login()JSSDKで指定された特定の権限を持つへの呼び出し

リクエストをスキップするユーザーを考慮しない場合、両方ともループが発生します

于 2012-07-11T20:20:48.137 に答える
0

彼は明らかにfacebook SDKライブラリを使用しています。権限をスキップするという話は聞いたことがありません。認証用の URL を作成するときに、適切な関数でそれらを設定します。ログイン認証フローを取得する価値はありますが、oauth_url += '&scope=email'代わりに試してみてください。または、スコープなしで oauth url を作成して、アプリケーションが要求するアクセス許可を確認することもできます。特定の権限を求められた場合は、ログイン機能をチェックして、すでにいくつかの権限が設定されているかどうかを確認してください。私の記憶が正しければ、それは facebook.php ファイルにあるはずです。

于 2013-12-13T17:12:23.647 に答える