2010-06-08 107 views
1

我正在开发一个在PHP和FBML的Facebook画布应用程序的开发过程,并且在设置应用程序的授权时遇到问题。我基本不知道如何去做,或者最好的方法是什么。Facebook的画布应用程序-php身份验证问题

我一直在互联网上搜索大部分的一天,但要么沉迷于旧API的东西,要么我不知道如何实现他们正在解释的东西。

这里是我有:

$facebook = new Facebook(array(
    'appId' => '*snip*', 
    'secret' => '*snip*', 
    'cookie' => true,)); 

$session = $facebook->getSession(); 

$fbme = null; 
if ($session) { 
    try { 
    $uid = $facebook->getUser(); 
    $fbme = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     d($e); 
    } 
} 

if (!$fbme) { 
    $loginUrl = $facebook->getLoginUrl(array(
       'canvas' => 1, 
       'fbconnect' => 0, 
     'req_perms' => "publish_stream,user_birthday,friends_birthday,user_events,user_hometown,friends_hometown,user_location,friends_location,offline_access," 
      ));; 
} 

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

但是,什么也不做,如果我改变了头,而不是使用脚本块尝试,我得到:

网址...是无效的

我是否去这一切都错了?

在此先感谢您的帮助。

安迪

+0

请输入完整的错误信息。 是否有一行例如28或更多,以便您/我们更容易地看到几乎是您的错误? – 2010-06-08 18:50:50

回答

1

我的共同包括具有用于验证以下内容:

$facebook = new Facebook(array(
    'appId' => $ini['appid'], 
    'secret' => $ini['appsecret'], 
    'cookie' => true, 
)); 

$session = $facebook->getSession(); 
$fbme = null; 
if ($session) { 
    try { 
     $fbme = $facebook->api('/me'); 
    } 
    catch (FacebookApiException $e) { 
     error_log($e); 
    } 
} 

// new login check 
if (!$fbme) { 
    $loginUrl = $facebook->getLoginUrl(array(
     'canvas' => 1, 
     'fbconnect' => 0, 
     'req_perms' => 'email', 
     'next' => FB_APP_URL, 
     'cancel_url' => FB_APP_URL, 
    )); 
    echo '<fb:redirect url="' . $loginUrl . '" />'; 
} 

,基本上示出了消息的使用任一添加应用程序或离开提示;如果他们已经通过验证,那么只需继续进行什么是beyong if (!$fbme)块。

+0

嘿马丁,我在$ fbme = $ facebook-> api('/ me');我正在使用最新的php-sdk。 – RubyDubee 2010-07-23 19:42:42

+0

你有什么异常? – 2010-07-24 09:20:59