我从以下代码中反复获取登录URL。
$this->fb = new Facebook(array(
'appId' => $this->CI->config->item('facebook_app_id'),
'secret' => $this->CI->config->item('facebook_secret'),
'cookie' => true,
));
if (!$this->fb->getSession()){
echo $this->fb->getLoginUrl();
}
当我打印fb对象时,它会显示有效的api密钥和密钥。
我在从Firefox清除Cookie后尝试过。我还试图在Firefox的下一个选项卡中以exlusively注销然后从facebook帐户重新登录。但结果是一样的。
以上代码始终生成登录网址。
我注意到的另一件事是,用户只需登录并返回。没有应用批准消息/屏幕显示。在facebook上我的appliaction设置有什么问题吗?
有人可以指导我做错了什么以及如何纠正。
提前致谢
答案 0 :(得分:1)
我喜欢使用JS SDK和PHP SDK来获得额外的功能。
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $this->appId ?>',
session : <?php echo json_encode($this->fb->getSession()); ?>, // don't refetch the session when PHP already has it
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/es_ES/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
然后,将此函数分配给您要打开登录和权限对话框的任何链接或按钮(我使用的是jQuery和带有.fbConnect类的链接):
$(".fbConnect").click(function() {
FB.login(function(response) {
window.location.reload();
}, {perms: 'user_photos,user_photo_video_tags,email,publish_stream'});
});
请注意,权限是在perms对象中指定的。重新加载时,会话应该可供PHP SDK使用。
另外,请确保您使用的是您在应用配置中指定的相同网址,否则无效。
答案 1 :(得分:0)
如果用户帐户允许您的应用程序连接,您将只获得有效会话。
你做到了吗?最简单的方法是使用Facebook提供的login button。