这是一个简单的代码,它在一个站点上运行,并且尽可能简单:
@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解决这个问题?