0

我有以下问题:

我正在尝试为 Facebook 做我的第一个应用程序,在 Facebook 连接后安装应用程序不会自动将我重定向到 url,而是在 Facebook 之外。这只发生在第一次安装后,如果 URL 已充值并保留在 Facebook 中。

有什么想法可以解决吗?

我不知道问题是代码还是应用程序配置:(

// PHP SDK v.3.0.0 de Facebook    
require 'includes/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '*******',
  'secret' => '*************',
));
$user = $facebook->getUser();
if ($user) {
  try {
    $user_profile = $facebook->api('/me');
    $me =  $facebook->api('/me');

  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array(
                'scope' => 'read_stream,publish_stream,user_about_me,user_likes,email,user_status'
            ));
}
 if (!$user) {
        echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
        exit;
    } 
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>php-sdk 3.0.0</title>
        <style typ="text/css">
            html, body { width: 520px;}
        </style>    
  </head>
  <body>
    <h1>php-sdk</h1>
    <h3>PHP Session</h3>
      <?php foreach($_SESSION as $key=>$value){
          echo '<strong>' . $key . '</strong> => ' . $value . '<br />';
      }
      ?>
      <h3>Tu</h3>
      <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
      <h3>Tus datos (/me)</h3>
      <?php foreach($user_profile as $key=>$value){
          echo '<strong>' . $key . '</strong> => ' . $value . '<br />';
      }
      ?>
  </body>
</html> 
4

1 回答 1

0

您没有redirect_urigetLoginUrl方法中指定 a ,因此 SDK 为您构建了一个基于您当前 URL 的方法。

因此,您只需将画布 URL 设置为redirect_uri

$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'read_stream,publish_stream,user_about_me,user_likes,email,user_status',
    'redirect_uri' => 'CANVAS_URL'
));

PS:$user_profile$me持有相同的值,只需使用其中一个而不是进行两次 Graph API 调用。

于 2012-10-28T11:29:13.863 回答