当用户接受应用程序并登录时,getUser甚至返回0(也就是无限循环)

时间:2012-10-03 15:46:13

标签: php facebook facebook-php-sdk

这是一个简单的代码,它在一个站点上运行,并且尽可能简单:

@ini_set('display_errors','On'); // enable or disable public display of errors (use 'On' or 'Off')
include_once('lib/facebook.php');

// Create our application instance
$config = array(
  'appId' => 'xx',
  'secret' => 'yyy'
);
$link = 'http://someurl.com';
$facebook = new Facebook($config);

// Get User ID
$user = $facebook->getUser();

if($user){ ?>
    <p>logged in</p>
<?php } else {
    $loginUrl = $facebook->getLoginUrl(array(
    'scope'         => 'manage_pages,email',
    'redirect_uri'  => $link,
    ));
    echo '<a href="'.$loginUrl.'">Login with FB</a>'; 
}

所以id是什么,它显示用户未登录时的登录链接(或具体 - 如果getUser()没有任何东西),如果getUser给出应该给出的内容,则显示带有文本的段落(通常用户更喜欢如果getUser返回0,那么将重定向放在那里,这将转到无限循环描述belove)

简单测试会显示问题。即使授予用户权限,也可以通过站点URL访问它,显示登录URL而不是段落。

问题出在哪里? 在尝试解决这个问题时,我已将网站的网址添加为“Facebook上的应用”,因此可以从Facebook内部访问。而eureka,如果以这种方式访问​​(通过Canvas Page url),getUser()可以正常工作。更何况,一旦你通过Canvas Page url链接访问过,那么当直接访问网站时 - getUser()也能正常工作。

那捕获量在哪里? 尝试使用浏览器的隐身功能我已经想到了otu,用户浏览器上存储了一些东西。直接从浏览器访问站点,用户已经在Canvas Page url上显示正确的响应,而当用户没有访问Canvas Page url的浏览器时,显示登录URL。

所以它接缝,问题以某种方式与浏览器缓存相关联,并且在访问整个页面而不是Canvas Page本身时,facebook没有设置正确的方法。

此外,当给出对app的访问时,当用户点击登录链接时,他会自动重定向回原始页面,状态和代码为_GET参数,因此在代码中,当自动重定向 - 无限循环具有不同的状态和每当重定向火灾发生时链接中的代码值。

任何人都知道如何使用php sdk解决这个问题?

0 个答案:

没有答案