2011-02-25 35 views
0

我已经编写了以下脚本,用于检查用户的会话并相应地显示登录/注销链接。脚本的作品,但问题是,我不知道如何设置回调URL,没有字段(或至少我找不到一个)在我的FB应用程序设置页面。有任何想法吗?Facebook PHP SDK,如何定义回调URL

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

$session = $facebook->getSession(); 

$me = null; 

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

?> 
<?php if ($me): ?> 
    <a href="<?php echo $facebook->getLogoutUrl(); ?>">Logout</a> 
<?php else: ?> 
    <a href="<?php echo $facebook->getLoginUrl(array('req_perms'=>"email,publish_stream")); ?>">Login</a> 
<?php endif; ?> 

回答

3

该参数被称为“下一个”。所以,你不喜欢这样写道:

<a href="<?php echo $facebook->getLoginUrl(array('req_perms'=>"email,publish_stream",'next'=>"welcome.html")); ?>">Login</a> 

更改“welcome.html”无论你希望用户在登录后登陆你的服务器上

+0

在最新的SDK'redirect_uri'代替'next'。 https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/ – Shahid

-1

在Facebook的PHP SDK文件,关于线418

public function getLoginUrl($params=array()) { 
    $currentUrl = $this->getCurrentUrl(); 
    return $this->getUrl(
     'www', 
     'login.php', 
     array_merge(array(
     'api_key'   => $this->getAppId(), 
     'cancel_url'  => $currentUrl, 
     'display'   => 'page', 
     'fbconnect'  => 1, 
     'next'   => $currentUrl, 
     'return_session' => 1, 
     'session_version' => 3, 
     'v'    => '1.0', 
    ), $params) 
    ); 
    } 

和445

public function getLogoutUrl($params=array()) { 
    return $this->getUrl(
     'www', 
     'logout.php', 
     array_merge(array(
     'next'   => 'http://yoururl.com/?logout=1', // or $currentUrl the same page who make the callback , and destroy session if it. 
     'access_token' => $this->getAccessToken(), 
    ), $params) 
    ); 
    } 
+0

那么在这些代码中'$ params = array()'和'array_merge'的目的是什么? – ianace