如何避免我的这个Facebook app api登录页面?

时间:2011-11-18 09:45:50

标签: facebook facebook-php-sdk

我在使用我的应用程序时遇到了问题,一旦我转到我的应用程序,它肯定会显示一个登录页面而不是允许页面?

它始终显示登录页面1然后只显示允许页面,我曾尝试过其他应用程序,如果我是第一次使用的用户,它肯定会只显示允许页面,它没有显示登录页面。

我的问题是如何避免我的登录页面直接转到允许页面?

这是我的登录页面图片 enter image description here

这是我的应用链接

https://apps.facebook.com/christmas_testing/

这是我的facebook php jdk api编码

<?php
$fbconfig['appid' ] = "XXXXXXXXXXXXX";
$fbconfig['secret'] = "XXXXXXXXXXXXX";
$fbconfig['baseUrl']    =   "myserverlink";
$fbconfig['appBaseUrl'] =   "http://apps.facebook.com/christmas_testing/";

if (isset($_GET['code'])){
    header("Location: " . $fbconfig['appBaseUrl']);
    exit;
}
if (isset($_GET['request_ids'])){
    //user comes from invitation
    //track them if you need
     header("Location: " . $fbconfig['appBaseUrl']);
}

$user   =   null; //facebook user uid
try{
    include_once "facebook.php";
}
catch(Exception $o){
    echo '<pre>';
    print_r($o);
    echo '</pre>';
}
// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true,
));

//Facebook Authentication part
$user = $facebook->getUser();

$loginUrl   = $facebook->getLoginUrl(
        array(
            'scope' => 'email,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown'
        )
);
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    //you should use error_log($e); instead of printing the info on browser
    d($e);  // d is a debug function defined at the end of this file
    $user = null;
  }
}

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

//get user basic description
$userInfo = $facebook->api("/$user");

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

&GT;

2 个答案:

答案 0 :(得分:1)

这是facebook最近推出的new auth dialog功能的效果。

使用这个新对话框时有两个“允许/登录”屏幕:

  • 常规权限,例如 - user_about_me,user_birthday,user_photos。
  • 扩展权限,例如 - read_insights,offline_access,publish_actions。

每个都会显示自己的对话框。首先,将显示常规权限,之后将显示扩展权限(如果您已请求扩展权限)...当用户首次登录时会发生这种情况,如果您希望稍后决定向应用程序添加其他权限,则可能会发生这种情况。<登记/>
取自Open Graph Beta › Auth Dialog

  

更新的Auth对话框将在第一个对话框上显示一组用户和朋友权限,并在第二个对话框屏幕上显示其他扩展权限(如果有)。

可以禁用此功能,并通过更改应用内的设置返回旧的身份验证对话框。转到应用设置中的高级标签,取消选中Enhanced Auth Dialog复选框。

答案 1 :(得分:-1)

在scope参数上,添加'offline_access'权限。这样,即使用户离线,用户也可以向应用程序授予权限。您将获得的access_token是无效的。